etude_for_aws 0.7.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +103 -0
  3. data/.rspec +2 -0
  4. data/.ruby-version +1 -0
  5. data/.yardopts +10 -0
  6. data/Dockerfile +17 -0
  7. data/Dockerfile-dev +20 -0
  8. data/Gemfile +6 -0
  9. data/Gemfile.lock +89 -0
  10. data/Guardfile +22 -0
  11. data/Jenkinsfile +11 -0
  12. data/README.md +26 -0
  13. data/Rakefile +12 -0
  14. data/Vagrantfile +15 -0
  15. data/bin/aws_console.rb +10 -0
  16. data/bin/console +14 -0
  17. data/bin/setup +8 -0
  18. data/circle.yml +22 -0
  19. data/config.yml +124 -0
  20. data/docker-compose.yml +9 -0
  21. data/docs/README.md +54 -0
  22. data/docs/_config.yml +6 -0
  23. data/docs/dev/cfm/cfm.md +9 -0
  24. data/docs/dev/cfm/images/vpc_core_model.png +0 -0
  25. data/docs/dev/cfm/images/vpc_type1.png +0 -0
  26. data/docs/dev/cfm/images/vpc_type2.png +0 -0
  27. data/docs/dev/cfm/images/vpc_type3.png +0 -0
  28. data/docs/dev/cfm/images/vpc_type4.png +0 -0
  29. data/docs/dev/cfm/images/vpc_type5.png +0 -0
  30. data/docs/dev/cfm/images/vpc_type6.png +0 -0
  31. data/docs/dev/cfm/images/vpc_type7.png +0 -0
  32. data/docs/dev/cfm/vpc/core_model.puml +35 -0
  33. data/docs/dev/cfm/vpc/vpc.md +39 -0
  34. data/docs/dev/cfm/vpc/vpc_type1.puml +17 -0
  35. data/docs/dev/cfm/vpc/vpc_type2.puml +23 -0
  36. data/docs/dev/cfm/vpc/vpc_type3.puml +24 -0
  37. data/docs/dev/cfm/vpc/vpc_type4.puml +23 -0
  38. data/docs/dev/cfm/vpc/vpc_type5.puml +25 -0
  39. data/docs/dev/cfm/vpc/vpc_type6.puml +26 -0
  40. data/docs/dev/cfm/vpc/vpc_type7.puml +39 -0
  41. data/docs/dev/ec2/core_model.puml +43 -0
  42. data/docs/dev/ec2/ec2.md +36 -0
  43. data/docs/dev/ec2/ec2_type1.puml +27 -0
  44. data/docs/dev/ec2/ec2_type2.puml +43 -0
  45. data/docs/dev/ec2/ec2_type3.puml +44 -0
  46. data/docs/dev/ec2/ec2_type4.puml +43 -0
  47. data/docs/dev/ec2/ec2_type5.puml +45 -0
  48. data/docs/dev/ec2/ec2_type6.puml +46 -0
  49. data/docs/dev/ec2/ec2_type7.puml +79 -0
  50. data/docs/dev/ec2/images/.keep +0 -0
  51. data/docs/dev/ec2/images/ec2_core_model.png +0 -0
  52. data/docs/dev/ec2/images/ec2_type1.png +0 -0
  53. data/docs/dev/ec2/images/ec2_type2.png +0 -0
  54. data/docs/dev/ec2/images/ec2_type3.png +0 -0
  55. data/docs/dev/ec2/images/ec2_type4.png +0 -0
  56. data/docs/dev/ec2/images/ec2_type5.png +0 -0
  57. data/docs/dev/ec2/images/ec2_type6.png +0 -0
  58. data/docs/dev/ec2/images/ec2_type7.png +0 -0
  59. data/docs/dev/vpc/core_model.puml +49 -0
  60. data/docs/dev/vpc/images/core_model.png +0 -0
  61. data/docs/dev/vpc/images/simple.png +0 -0
  62. data/docs/dev/vpc/images/standard.png +0 -0
  63. data/docs/dev/vpc/simple.puml +17 -0
  64. data/docs/dev/vpc/standard.puml +24 -0
  65. data/docs/dev/vpc/vpc.md +19 -0
  66. data/docs/ops/build_aws_sdk_repl.md +19 -0
  67. data/docs/ops/images/.keep +0 -0
  68. data/docs/ops/run_rake_task.md +89 -0
  69. data/docs/ops/ship_circleci.md +9 -0
  70. data/docs/ops/ship_jenkins.md +20 -0
  71. data/docs/ops/ship_ruby_gem.md +26 -0
  72. data/docs/template_catalog.md +6 -0
  73. data/docs/template_pattern.md +13 -0
  74. data/docs/template_recipe.md +6 -0
  75. data/docs/template_spec.md +8 -0
  76. data/etude_for_aws.gemspec +41 -0
  77. data/etude_for_aws.iml +42 -0
  78. data/exe/etude_for_aws +3 -0
  79. data/lib/etude_for_aws.rb +38 -0
  80. data/lib/etude_for_aws/cfm/configuration.rb +39 -0
  81. data/lib/etude_for_aws/cfm/vpc/cfm_templates/vpc-1az-1subnet-pub.template +529 -0
  82. data/lib/etude_for_aws/cfm/vpc/cfm_templates/vpc-1az-2subnet-pub-pri.template +790 -0
  83. data/lib/etude_for_aws/cfm/vpc/cfm_templates/vpc-1az-2subnet-pub.template +634 -0
  84. data/lib/etude_for_aws/cfm/vpc/cfm_templates/vpc-2az-2subnet-pri.template +645 -0
  85. data/lib/etude_for_aws/cfm/vpc/cfm_templates/vpc-2az-2subnet-pub-pri.template +611 -0
  86. data/lib/etude_for_aws/cfm/vpc/cfm_templates/vpc-2az-2subnet-pub.template +646 -0
  87. data/lib/etude_for_aws/cfm/vpc/cfm_templates/vpc-2az-4subnet-pub-pri.template +1010 -0
  88. data/lib/etude_for_aws/cfm/vpc/null_vpc.rb +13 -0
  89. data/lib/etude_for_aws/cfm/vpc/one_az_one_public_subnet_vpc.rb +45 -0
  90. data/lib/etude_for_aws/cfm/vpc/one_az_two_public_and_private_subnet_vpc.rb +47 -0
  91. data/lib/etude_for_aws/cfm/vpc/one_az_two_public_subnet_vpc.rb +47 -0
  92. data/lib/etude_for_aws/cfm/vpc/two_az_one_public_subnet_and_private_subnet_vpc.rb +52 -0
  93. data/lib/etude_for_aws/cfm/vpc/two_az_two_private_subnet_vpc.rb +38 -0
  94. data/lib/etude_for_aws/cfm/vpc/two_az_two_public_subnet_and_private_subnet_vpc.rb +38 -0
  95. data/lib/etude_for_aws/cfm/vpc/two_az_two_public_subnet_vpc.rb +38 -0
  96. data/lib/etude_for_aws/cfm/vpc/vpc.rb +104 -0
  97. data/lib/etude_for_aws/ec2/configuration.rb +66 -0
  98. data/lib/etude_for_aws/ec2/ec2.rb +218 -0
  99. data/lib/etude_for_aws/ec2/ec2_api_gateway.rb +127 -0
  100. data/lib/etude_for_aws/ec2/ec2_instance.rb +107 -0
  101. data/lib/etude_for_aws/ec2/key_pair.rb +46 -0
  102. data/lib/etude_for_aws/ec2/security_group.rb +75 -0
  103. data/lib/etude_for_aws/ec2/vpc_interface.rb +11 -0
  104. data/lib/etude_for_aws/helpers/certification_helper.rb +16 -0
  105. data/lib/etude_for_aws/helpers/configuration_helper.rb +103 -0
  106. data/lib/etude_for_aws/tasks/cfm.rake +73 -0
  107. data/lib/etude_for_aws/tasks/ec2.rake +210 -0
  108. data/lib/etude_for_aws/tasks/vpc.rake +47 -0
  109. data/lib/etude_for_aws/version.rb +3 -0
  110. data/lib/etude_for_aws/vpc/configuration.rb +77 -0
  111. data/lib/etude_for_aws/vpc/customer_gateway.rb +28 -0
  112. data/lib/etude_for_aws/vpc/internet_gateway.rb +15 -0
  113. data/lib/etude_for_aws/vpc/route_table.rb +42 -0
  114. data/lib/etude_for_aws/vpc/simple_vpc.rb +57 -0
  115. data/lib/etude_for_aws/vpc/standard_vpc.rb +94 -0
  116. data/lib/etude_for_aws/vpc/subnet.rb +22 -0
  117. data/lib/etude_for_aws/vpc/vpc.rb +147 -0
  118. data/lib/etude_for_aws/vpc/vpc_api_gateway.rb +277 -0
  119. data/lib/etude_for_aws/vpc/vpc_director.rb +43 -0
  120. data/lib/etude_for_aws/vpc/vpn.rb +244 -0
  121. data/lib/etude_for_aws/vpc/vpn_connection.rb +28 -0
  122. data/lib/etude_for_aws/vpc/vpn_director.rb +47 -0
  123. data/lib/etude_for_aws/vpc/vpn_gateway.rb +36 -0
  124. metadata +280 -0
@@ -0,0 +1,634 @@
1
+ {
2
+ "AWSTemplateFormatVersion": "2010-09-09",
3
+ "Description": "AWS CloudFormation Sample Template.",
4
+ "Parameters" : {
5
+ "AZ1" : {
6
+ "Default" : "ap-northeast-1a",
7
+ "Description" : "AZ",
8
+ "Type" : "String",
9
+ "AllowedValues" : [ "ap-northeast-1a","ap-northeast-1c","us-west-2a","us-west-2b","us-west-2c" ],
10
+ "ConstraintDescription" : "must select a valid availability zone."
11
+ }
12
+ },
13
+ "Mappings": {
14
+ "SubnetConfig": {
15
+ "VPC": {
16
+ "CIDR": "10.0.0.0/16"
17
+ },
18
+ "Public-1a": {
19
+ "CIDR": "10.0.0.0/24"
20
+ },
21
+ "Public-2a": {
22
+ "CIDR": "10.0.1.0/24"
23
+ }
24
+ }
25
+ },
26
+ "Resources": {
27
+ "VPC": {
28
+ "Type": "AWS::EC2::VPC",
29
+ "Properties": {
30
+ "CidrBlock": {
31
+ "Fn::FindInMap": [
32
+ "SubnetConfig",
33
+ "VPC",
34
+ "CIDR"
35
+ ]
36
+ },
37
+ "Tags": [
38
+ {
39
+ "Key": "Application",
40
+ "Value": {
41
+ "Ref": "AWS::StackId"
42
+ }
43
+ },
44
+ {
45
+ "Key": "Network",
46
+ "Value": "Public"
47
+ }
48
+ ]
49
+ },
50
+ "Metadata": {
51
+ "AWS::CloudFormation::Designer": {
52
+ "id": "36f558fe-7a2b-4a24-9edb-3b9a10d33217"
53
+ }
54
+ }
55
+ },
56
+ "PublicSubnet1a": {
57
+ "Type": "AWS::EC2::Subnet",
58
+ "Properties": {
59
+ "VpcId": {
60
+ "Ref": "VPC"
61
+ },
62
+ "CidrBlock": {
63
+ "Fn::FindInMap": [
64
+ "SubnetConfig",
65
+ "Public-1a",
66
+ "CIDR"
67
+ ]
68
+ },
69
+ "AvailabilityZone": {"Ref": "AZ1"},
70
+ "Tags": [
71
+ {
72
+ "Key": "Application",
73
+ "Value": {
74
+ "Ref": "AWS::StackId"
75
+ }
76
+ },
77
+ {
78
+ "Key": "Network",
79
+ "Value": "Public"
80
+ }
81
+ ]
82
+ },
83
+ "Metadata": {
84
+ "AWS::CloudFormation::Designer": {
85
+ "id": "d17f3169-9687-4907-ac33-04ce215fded7"
86
+ }
87
+ }
88
+ },
89
+ "PublicSubnet2a": {
90
+ "Type": "AWS::EC2::Subnet",
91
+ "Properties": {
92
+ "VpcId": {
93
+ "Ref": "VPC"
94
+ },
95
+ "CidrBlock": {
96
+ "Fn::FindInMap": [
97
+ "SubnetConfig",
98
+ "Public-2a",
99
+ "CIDR"
100
+ ]
101
+ },
102
+ "AvailabilityZone": {"Ref": "AZ1"},
103
+ "Tags": [
104
+ {
105
+ "Key": "Application",
106
+ "Value": {
107
+ "Ref": "AWS::StackId"
108
+ }
109
+ },
110
+ {
111
+ "Key": "Network",
112
+ "Value": "Public"
113
+ }
114
+ ]
115
+ },
116
+ "Metadata": {
117
+ "AWS::CloudFormation::Designer": {
118
+ "id": "21cff9ba-e2c6-4d76-80d2-7f10d6b618b0"
119
+ }
120
+ }
121
+ },
122
+ "InternetGateway": {
123
+ "Type": "AWS::EC2::InternetGateway",
124
+ "Properties": {
125
+ "Tags": [
126
+ {
127
+ "Key": "Application",
128
+ "Value": {
129
+ "Ref": "AWS::StackId"
130
+ }
131
+ },
132
+ {
133
+ "Key": "Network",
134
+ "Value": "Public"
135
+ }
136
+ ]
137
+ },
138
+ "Metadata": {
139
+ "AWS::CloudFormation::Designer": {
140
+ "id": "7354dd3a-e180-418e-8cd2-a9b2ad2a4666"
141
+ }
142
+ }
143
+ },
144
+ "GatewayToInternet": {
145
+ "Type": "AWS::EC2::VPCGatewayAttachment",
146
+ "Properties": {
147
+ "VpcId": {
148
+ "Ref": "VPC"
149
+ },
150
+ "InternetGatewayId": {
151
+ "Ref": "InternetGateway"
152
+ }
153
+ },
154
+ "Metadata": {
155
+ "AWS::CloudFormation::Designer": {
156
+ "id": "92a83719-48bf-4e04-a3cd-0f8b99305053"
157
+ }
158
+ }
159
+ },
160
+ "PublicRouteTable": {
161
+ "Type": "AWS::EC2::RouteTable",
162
+ "Properties": {
163
+ "VpcId": {
164
+ "Ref": "VPC"
165
+ },
166
+ "Tags": [
167
+ {
168
+ "Key": "Application",
169
+ "Value": {
170
+ "Ref": "AWS::StackId"
171
+ }
172
+ },
173
+ {
174
+ "Key": "Network",
175
+ "Value": "Public"
176
+ }
177
+ ]
178
+ },
179
+ "Metadata": {
180
+ "AWS::CloudFormation::Designer": {
181
+ "id": "35457506-b697-467e-925b-61a48305e0da"
182
+ }
183
+ }
184
+ },
185
+ "PublicRoute": {
186
+ "Type": "AWS::EC2::Route",
187
+ "DependsOn": "GatewayToInternet",
188
+ "Properties": {
189
+ "RouteTableId": {
190
+ "Ref": "PublicRouteTable"
191
+ },
192
+ "DestinationCidrBlock": "0.0.0.0/0",
193
+ "GatewayId": {
194
+ "Ref": "InternetGateway"
195
+ }
196
+ },
197
+ "Metadata": {
198
+ "AWS::CloudFormation::Designer": {
199
+ "id": "3b3697f1-2874-4073-847a-c2814e9c4336"
200
+ }
201
+ }
202
+ },
203
+ "PublicSubnetRouteTableAssociation1a": {
204
+ "Type": "AWS::EC2::SubnetRouteTableAssociation",
205
+ "Properties": {
206
+ "SubnetId": {
207
+ "Ref": "PublicSubnet1a"
208
+ },
209
+ "RouteTableId": {
210
+ "Ref": "PublicRouteTable"
211
+ }
212
+ },
213
+ "Metadata": {
214
+ "AWS::CloudFormation::Designer": {
215
+ "id": "6033dd6a-6b5b-4b0a-9e41-a59a779c5a61"
216
+ }
217
+ }
218
+ },
219
+ "PublicSubnetRouteTableAssociation2a": {
220
+ "Type": "AWS::EC2::SubnetRouteTableAssociation",
221
+ "Properties": {
222
+ "SubnetId": {
223
+ "Ref": "PublicSubnet2a"
224
+ },
225
+ "RouteTableId": {
226
+ "Ref": "PublicRouteTable"
227
+ }
228
+ },
229
+ "Metadata": {
230
+ "AWS::CloudFormation::Designer": {
231
+ "id": "ff1a00b2-0c71-4500-a421-08255279d2f0"
232
+ }
233
+ }
234
+ },
235
+ "PublicNetworkAcl": {
236
+ "Type": "AWS::EC2::NetworkAcl",
237
+ "Properties": {
238
+ "VpcId": {
239
+ "Ref": "VPC"
240
+ },
241
+ "Tags": [
242
+ {
243
+ "Key": "Application",
244
+ "Value": {
245
+ "Ref": "AWS::StackId"
246
+ }
247
+ },
248
+ {
249
+ "Key": "Network",
250
+ "Value": "Public"
251
+ }
252
+ ]
253
+ },
254
+ "Metadata": {
255
+ "AWS::CloudFormation::Designer": {
256
+ "id": "9d9f7c73-1580-4f8e-8463-6e27fb43e766"
257
+ }
258
+ }
259
+ },
260
+ "InboundHTTPPublicNetworkAclEntry": {
261
+ "Type": "AWS::EC2::NetworkAclEntry",
262
+ "Properties": {
263
+ "NetworkAclId": {
264
+ "Ref": "PublicNetworkAcl"
265
+ },
266
+ "RuleNumber": "100",
267
+ "Protocol": "6",
268
+ "RuleAction": "allow",
269
+ "Egress": "false",
270
+ "CidrBlock": "0.0.0.0/0",
271
+ "PortRange": {
272
+ "From": "80",
273
+ "To": "80"
274
+ }
275
+ },
276
+ "Metadata": {
277
+ "AWS::CloudFormation::Designer": {
278
+ "id": "fc400079-4e29-449d-9261-802c07e90664"
279
+ }
280
+ }
281
+ },
282
+ "InboundHTTPSPublicNetworkAclEntry": {
283
+ "Type": "AWS::EC2::NetworkAclEntry",
284
+ "Properties": {
285
+ "NetworkAclId": {
286
+ "Ref": "PublicNetworkAcl"
287
+ },
288
+ "RuleNumber": "101",
289
+ "Protocol": "6",
290
+ "RuleAction": "allow",
291
+ "Egress": "false",
292
+ "CidrBlock": "0.0.0.0/0",
293
+ "PortRange": {
294
+ "From": "443",
295
+ "To": "443"
296
+ }
297
+ },
298
+ "Metadata": {
299
+ "AWS::CloudFormation::Designer": {
300
+ "id": "8b8f955d-4b13-43ad-bd92-88a983aba05e"
301
+ }
302
+ }
303
+ },
304
+ "InboundSSHPublicNetworkAclEntry": {
305
+ "Type": "AWS::EC2::NetworkAclEntry",
306
+ "Properties": {
307
+ "NetworkAclId": {
308
+ "Ref": "PublicNetworkAcl"
309
+ },
310
+ "RuleNumber": "102",
311
+ "Protocol": "6",
312
+ "RuleAction": "allow",
313
+ "Egress": "false",
314
+ "CidrBlock": "0.0.0.0/0",
315
+ "PortRange": {
316
+ "From": "22",
317
+ "To": "22"
318
+ }
319
+ },
320
+ "Metadata": {
321
+ "AWS::CloudFormation::Designer": {
322
+ "id": "c8ec5a7a-62cb-4406-9f2d-0b5a564fd966"
323
+ }
324
+ }
325
+ },
326
+ "InboundEphemeralPublicNetworkAclEntry": {
327
+ "Type": "AWS::EC2::NetworkAclEntry",
328
+ "Properties": {
329
+ "NetworkAclId": {
330
+ "Ref": "PublicNetworkAcl"
331
+ },
332
+ "RuleNumber": "103",
333
+ "Protocol": "6",
334
+ "RuleAction": "allow",
335
+ "Egress": "false",
336
+ "CidrBlock": "0.0.0.0/0",
337
+ "PortRange": {
338
+ "From": "1024",
339
+ "To": "65535"
340
+ }
341
+ },
342
+ "Metadata": {
343
+ "AWS::CloudFormation::Designer": {
344
+ "id": "f22aa599-4f7e-4715-a098-41e10c081523"
345
+ }
346
+ }
347
+ },
348
+ "OutboundPublicNetworkAclEntry": {
349
+ "Type": "AWS::EC2::NetworkAclEntry",
350
+ "Properties": {
351
+ "NetworkAclId": {
352
+ "Ref": "PublicNetworkAcl"
353
+ },
354
+ "RuleNumber": "100",
355
+ "Protocol": "6",
356
+ "RuleAction": "allow",
357
+ "Egress": "true",
358
+ "CidrBlock": "0.0.0.0/0",
359
+ "PortRange": {
360
+ "From": "0",
361
+ "To": "65535"
362
+ }
363
+ },
364
+ "Metadata": {
365
+ "AWS::CloudFormation::Designer": {
366
+ "id": "6a00b44b-c40f-4464-aad5-1d54e3772398"
367
+ }
368
+ }
369
+ },
370
+ "PublicSubnetNetworkAclAssociation1a": {
371
+ "Type": "AWS::EC2::SubnetNetworkAclAssociation",
372
+ "Properties": {
373
+ "SubnetId": {
374
+ "Ref": "PublicSubnet1a"
375
+ },
376
+ "NetworkAclId": {
377
+ "Ref": "PublicNetworkAcl"
378
+ }
379
+ }
380
+ },
381
+ "PublicSubnetNetworkAclAssociation2a": {
382
+ "Type": "AWS::EC2::SubnetNetworkAclAssociation",
383
+ "Properties": {
384
+ "SubnetId": {
385
+ "Ref": "PublicSubnet2a"
386
+ },
387
+ "NetworkAclId": {
388
+ "Ref": "PublicNetworkAcl"
389
+ }
390
+ },
391
+ "Metadata": {
392
+ "AWS::CloudFormation::Designer": {
393
+ "id": "353e5d2f-7968-4636-a916-b4d1305ad23f"
394
+ }
395
+ }
396
+ }
397
+ },
398
+ "Outputs": {
399
+ "VPCID" : {
400
+ "Value" : { "Ref" : "VPC" },
401
+ "Description" : "VPC ID"
402
+ },
403
+ "SUBNETPUB1" : {
404
+ "Value" : { "Ref" : "PublicSubnet1a" },
405
+ "Description" : "PublicSubnet1"
406
+ },
407
+ "SUBNETPUB2" : {
408
+ "Value" : { "Ref" : "PublicSubnet2a" },
409
+ "Description" : "PublicSubnet2"
410
+ }
411
+ },
412
+ "Metadata": {
413
+ "AWS::CloudFormation::Designer": {
414
+ "7354dd3a-e180-418e-8cd2-a9b2ad2a4666": {
415
+ "size": {
416
+ "width": 60,
417
+ "height": 60
418
+ },
419
+ "position": {
420
+ "x": 870,
421
+ "y": 570
422
+ },
423
+ "z": 1,
424
+ "embeds": []
425
+ },
426
+ "36f558fe-7a2b-4a24-9edb-3b9a10d33217": {
427
+ "size": {
428
+ "width": 1120,
429
+ "height": 470
430
+ },
431
+ "position": {
432
+ "x": -350,
433
+ "y": 530
434
+ },
435
+ "z": 1,
436
+ "embeds": [
437
+ "9d9f7c73-1580-4f8e-8463-6e27fb43e766",
438
+ "35457506-b697-467e-925b-61a48305e0da",
439
+ "21cff9ba-e2c6-4d76-80d2-7f10d6b618b0",
440
+ "d17f3169-9687-4907-ac33-04ce215fded7"
441
+ ]
442
+ },
443
+ "9d9f7c73-1580-4f8e-8463-6e27fb43e766": {
444
+ "size": {
445
+ "width": 300,
446
+ "height": 380
447
+ },
448
+ "position": {
449
+ "x": -310,
450
+ "y": 570
451
+ },
452
+ "z": 2,
453
+ "parent": "36f558fe-7a2b-4a24-9edb-3b9a10d33217",
454
+ "embeds": [
455
+ "6a00b44b-c40f-4464-aad5-1d54e3772398",
456
+ "f22aa599-4f7e-4715-a098-41e10c081523",
457
+ "c8ec5a7a-62cb-4406-9f2d-0b5a564fd966",
458
+ "8b8f955d-4b13-43ad-bd92-88a983aba05e",
459
+ "fc400079-4e29-449d-9261-802c07e90664"
460
+ ]
461
+ },
462
+ "6a00b44b-c40f-4464-aad5-1d54e3772398": {
463
+ "size": {
464
+ "width": 60,
465
+ "height": 60
466
+ },
467
+ "position": {
468
+ "x": -250,
469
+ "y": 830
470
+ },
471
+ "z": 3,
472
+ "parent": "9d9f7c73-1580-4f8e-8463-6e27fb43e766",
473
+ "embeds": []
474
+ },
475
+ "f22aa599-4f7e-4715-a098-41e10c081523": {
476
+ "size": {
477
+ "width": 60,
478
+ "height": 60
479
+ },
480
+ "position": {
481
+ "x": -140,
482
+ "y": 790
483
+ },
484
+ "z": 3,
485
+ "parent": "9d9f7c73-1580-4f8e-8463-6e27fb43e766",
486
+ "embeds": []
487
+ },
488
+ "c8ec5a7a-62cb-4406-9f2d-0b5a564fd966": {
489
+ "size": {
490
+ "width": 60,
491
+ "height": 60
492
+ },
493
+ "position": {
494
+ "x": -250,
495
+ "y": 610
496
+ },
497
+ "z": 3,
498
+ "parent": "9d9f7c73-1580-4f8e-8463-6e27fb43e766",
499
+ "embeds": []
500
+ },
501
+ "8b8f955d-4b13-43ad-bd92-88a983aba05e": {
502
+ "size": {
503
+ "width": 60,
504
+ "height": 60
505
+ },
506
+ "position": {
507
+ "x": -250,
508
+ "y": 720
509
+ },
510
+ "z": 3,
511
+ "parent": "9d9f7c73-1580-4f8e-8463-6e27fb43e766",
512
+ "embeds": []
513
+ },
514
+ "fc400079-4e29-449d-9261-802c07e90664": {
515
+ "size": {
516
+ "width": 60,
517
+ "height": 60
518
+ },
519
+ "position": {
520
+ "x": -140,
521
+ "y": 690
522
+ },
523
+ "z": 3,
524
+ "parent": "9d9f7c73-1580-4f8e-8463-6e27fb43e766",
525
+ "embeds": []
526
+ },
527
+ "35457506-b697-467e-925b-61a48305e0da": {
528
+ "size": {
529
+ "width": 180,
530
+ "height": 330
531
+ },
532
+ "position": {
533
+ "x": 510,
534
+ "y": 580
535
+ },
536
+ "z": 2,
537
+ "parent": "36f558fe-7a2b-4a24-9edb-3b9a10d33217",
538
+ "embeds": [
539
+ "3b3697f1-2874-4073-847a-c2814e9c4336"
540
+ ]
541
+ },
542
+ "92a83719-48bf-4e04-a3cd-0f8b99305053": {
543
+ "source": {
544
+ "id": "7354dd3a-e180-418e-8cd2-a9b2ad2a4666"
545
+ },
546
+ "target": {
547
+ "id": "36f558fe-7a2b-4a24-9edb-3b9a10d33217"
548
+ },
549
+ "z": 1
550
+ },
551
+ "3b3697f1-2874-4073-847a-c2814e9c4336": {
552
+ "size": {
553
+ "width": 60,
554
+ "height": 60
555
+ },
556
+ "position": {
557
+ "x": 560,
558
+ "y": 720
559
+ },
560
+ "z": 3,
561
+ "parent": "35457506-b697-467e-925b-61a48305e0da",
562
+ "embeds": [],
563
+ "references": [
564
+ "7354dd3a-e180-418e-8cd2-a9b2ad2a4666"
565
+ ],
566
+ "dependson": [
567
+ "92a83719-48bf-4e04-a3cd-0f8b99305053"
568
+ ]
569
+ },
570
+ "d17f3169-9687-4907-ac33-04ce215fded7": {
571
+ "size": {
572
+ "width": 290,
573
+ "height": 120
574
+ },
575
+ "position": {
576
+ "x": 90,
577
+ "y": 630
578
+ },
579
+ "z": 2,
580
+ "parent": "36f558fe-7a2b-4a24-9edb-3b9a10d33217",
581
+ "embeds": []
582
+ },
583
+ "de86ddc8-8415-41a5-a905-b1bda5ba3fed": {
584
+ "source": {
585
+ "id": "9d9f7c73-1580-4f8e-8463-6e27fb43e766"
586
+ },
587
+ "target": {
588
+ "id": "d17f3169-9687-4907-ac33-04ce215fded7"
589
+ },
590
+ "z": 2
591
+ },
592
+ "6033dd6a-6b5b-4b0a-9e41-a59a779c5a61": {
593
+ "source": {
594
+ "id": "35457506-b697-467e-925b-61a48305e0da"
595
+ },
596
+ "target": {
597
+ "id": "d17f3169-9687-4907-ac33-04ce215fded7"
598
+ },
599
+ "z": 2
600
+ },
601
+ "21cff9ba-e2c6-4d76-80d2-7f10d6b618b0": {
602
+ "size": {
603
+ "width": 290,
604
+ "height": 100
605
+ },
606
+ "position": {
607
+ "x": 90,
608
+ "y": 790
609
+ },
610
+ "z": 2,
611
+ "parent": "36f558fe-7a2b-4a24-9edb-3b9a10d33217",
612
+ "embeds": []
613
+ },
614
+ "ff1a00b2-0c71-4500-a421-08255279d2f0": {
615
+ "source": {
616
+ "id": "35457506-b697-467e-925b-61a48305e0da"
617
+ },
618
+ "target": {
619
+ "id": "21cff9ba-e2c6-4d76-80d2-7f10d6b618b0"
620
+ },
621
+ "z": 2
622
+ },
623
+ "353e5d2f-7968-4636-a916-b4d1305ad23f": {
624
+ "source": {
625
+ "id": "9d9f7c73-1580-4f8e-8463-6e27fb43e766"
626
+ },
627
+ "target": {
628
+ "id": "21cff9ba-e2c6-4d76-80d2-7f10d6b618b0"
629
+ },
630
+ "z": 2
631
+ }
632
+ }
633
+ }
634
+ }