@aws-cdk/aws-s3tables-alpha 2.234.1-alpha.0 → 2.235.1-alpha.0
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.
- package/.jsii +79 -85
- package/awslint.json +8 -1
- package/lib/namespace.js +1 -1
- package/lib/table-bucket-policy.js +1 -1
- package/lib/table-bucket.d.ts +9 -0
- package/lib/table-bucket.js +11 -2
- package/lib/table-policy.js +1 -1
- package/lib/table.d.ts +9 -0
- package/lib/table.js +11 -2
- package/package.json +6 -6
package/.jsii
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"url": "https://aws.amazon.com"
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"aws-cdk-lib": "^2.
|
|
11
|
+
"aws-cdk-lib": "^2.235.1",
|
|
12
12
|
"constructs": "^10.0.0"
|
|
13
13
|
},
|
|
14
14
|
"dependencyClosure": {
|
|
@@ -8543,7 +8543,7 @@
|
|
|
8543
8543
|
"kind": "interface",
|
|
8544
8544
|
"locationInModule": {
|
|
8545
8545
|
"filename": "lib/table.ts",
|
|
8546
|
-
"line":
|
|
8546
|
+
"line": 255
|
|
8547
8547
|
},
|
|
8548
8548
|
"name": "CompactionProperty",
|
|
8549
8549
|
"properties": [
|
|
@@ -8556,7 +8556,7 @@
|
|
|
8556
8556
|
"immutable": true,
|
|
8557
8557
|
"locationInModule": {
|
|
8558
8558
|
"filename": "lib/table.ts",
|
|
8559
|
-
"line":
|
|
8559
|
+
"line": 259
|
|
8560
8560
|
},
|
|
8561
8561
|
"name": "status",
|
|
8562
8562
|
"type": {
|
|
@@ -8572,7 +8572,7 @@
|
|
|
8572
8572
|
"immutable": true,
|
|
8573
8573
|
"locationInModule": {
|
|
8574
8574
|
"filename": "lib/table.ts",
|
|
8575
|
-
"line":
|
|
8575
|
+
"line": 263
|
|
8576
8576
|
},
|
|
8577
8577
|
"name": "targetFileSizeMb",
|
|
8578
8578
|
"type": {
|
|
@@ -9134,7 +9134,7 @@
|
|
|
9134
9134
|
"kind": "interface",
|
|
9135
9135
|
"locationInModule": {
|
|
9136
9136
|
"filename": "lib/table.ts",
|
|
9137
|
-
"line":
|
|
9137
|
+
"line": 284
|
|
9138
9138
|
},
|
|
9139
9139
|
"name": "IcebergMetadataProperty",
|
|
9140
9140
|
"properties": [
|
|
@@ -9148,7 +9148,7 @@
|
|
|
9148
9148
|
"immutable": true,
|
|
9149
9149
|
"locationInModule": {
|
|
9150
9150
|
"filename": "lib/table.ts",
|
|
9151
|
-
"line":
|
|
9151
|
+
"line": 290
|
|
9152
9152
|
},
|
|
9153
9153
|
"name": "icebergSchema",
|
|
9154
9154
|
"type": {
|
|
@@ -9173,7 +9173,7 @@
|
|
|
9173
9173
|
"kind": "interface",
|
|
9174
9174
|
"locationInModule": {
|
|
9175
9175
|
"filename": "lib/table.ts",
|
|
9176
|
-
"line":
|
|
9176
|
+
"line": 296
|
|
9177
9177
|
},
|
|
9178
9178
|
"name": "IcebergSchemaProperty",
|
|
9179
9179
|
"properties": [
|
|
@@ -9186,7 +9186,7 @@
|
|
|
9186
9186
|
"immutable": true,
|
|
9187
9187
|
"locationInModule": {
|
|
9188
9188
|
"filename": "lib/table.ts",
|
|
9189
|
-
"line":
|
|
9189
|
+
"line": 300
|
|
9190
9190
|
},
|
|
9191
9191
|
"name": "schemaFieldList",
|
|
9192
9192
|
"type": {
|
|
@@ -9506,7 +9506,7 @@
|
|
|
9506
9506
|
"kind": "enum",
|
|
9507
9507
|
"locationInModule": {
|
|
9508
9508
|
"filename": "lib/table.ts",
|
|
9509
|
-
"line":
|
|
9509
|
+
"line": 243
|
|
9510
9510
|
},
|
|
9511
9511
|
"members": [
|
|
9512
9512
|
{
|
|
@@ -9535,7 +9535,7 @@
|
|
|
9535
9535
|
"kind": "interface",
|
|
9536
9536
|
"locationInModule": {
|
|
9537
9537
|
"filename": "lib/table.ts",
|
|
9538
|
-
"line":
|
|
9538
|
+
"line": 306
|
|
9539
9539
|
},
|
|
9540
9540
|
"name": "SchemaFieldProperty",
|
|
9541
9541
|
"properties": [
|
|
@@ -9548,7 +9548,7 @@
|
|
|
9548
9548
|
"immutable": true,
|
|
9549
9549
|
"locationInModule": {
|
|
9550
9550
|
"filename": "lib/table.ts",
|
|
9551
|
-
"line":
|
|
9551
|
+
"line": 310
|
|
9552
9552
|
},
|
|
9553
9553
|
"name": "name",
|
|
9554
9554
|
"type": {
|
|
@@ -9565,7 +9565,7 @@
|
|
|
9565
9565
|
"immutable": true,
|
|
9566
9566
|
"locationInModule": {
|
|
9567
9567
|
"filename": "lib/table.ts",
|
|
9568
|
-
"line":
|
|
9568
|
+
"line": 326
|
|
9569
9569
|
},
|
|
9570
9570
|
"name": "type",
|
|
9571
9571
|
"type": {
|
|
@@ -9583,7 +9583,7 @@
|
|
|
9583
9583
|
"immutable": true,
|
|
9584
9584
|
"locationInModule": {
|
|
9585
9585
|
"filename": "lib/table.ts",
|
|
9586
|
-
"line":
|
|
9586
|
+
"line": 319
|
|
9587
9587
|
},
|
|
9588
9588
|
"name": "required",
|
|
9589
9589
|
"optional": true,
|
|
@@ -9611,7 +9611,7 @@
|
|
|
9611
9611
|
"kind": "interface",
|
|
9612
9612
|
"locationInModule": {
|
|
9613
9613
|
"filename": "lib/table.ts",
|
|
9614
|
-
"line":
|
|
9614
|
+
"line": 336
|
|
9615
9615
|
},
|
|
9616
9616
|
"name": "SnapshotManagementProperty",
|
|
9617
9617
|
"properties": [
|
|
@@ -9625,7 +9625,7 @@
|
|
|
9625
9625
|
"immutable": true,
|
|
9626
9626
|
"locationInModule": {
|
|
9627
9627
|
"filename": "lib/table.ts",
|
|
9628
|
-
"line":
|
|
9628
|
+
"line": 342
|
|
9629
9629
|
},
|
|
9630
9630
|
"name": "maxSnapshotAgeHours",
|
|
9631
9631
|
"optional": true,
|
|
@@ -9643,7 +9643,7 @@
|
|
|
9643
9643
|
"immutable": true,
|
|
9644
9644
|
"locationInModule": {
|
|
9645
9645
|
"filename": "lib/table.ts",
|
|
9646
|
-
"line":
|
|
9646
|
+
"line": 349
|
|
9647
9647
|
},
|
|
9648
9648
|
"name": "minSnapshotsToKeep",
|
|
9649
9649
|
"optional": true,
|
|
@@ -9661,7 +9661,7 @@
|
|
|
9661
9661
|
"immutable": true,
|
|
9662
9662
|
"locationInModule": {
|
|
9663
9663
|
"filename": "lib/table.ts",
|
|
9664
|
-
"line":
|
|
9664
|
+
"line": 356
|
|
9665
9665
|
},
|
|
9666
9666
|
"name": "status",
|
|
9667
9667
|
"optional": true,
|
|
@@ -9686,7 +9686,7 @@
|
|
|
9686
9686
|
"kind": "enum",
|
|
9687
9687
|
"locationInModule": {
|
|
9688
9688
|
"filename": "lib/table.ts",
|
|
9689
|
-
"line":
|
|
9689
|
+
"line": 269
|
|
9690
9690
|
},
|
|
9691
9691
|
"members": [
|
|
9692
9692
|
{
|
|
@@ -9725,7 +9725,7 @@
|
|
|
9725
9725
|
},
|
|
9726
9726
|
"locationInModule": {
|
|
9727
9727
|
"filename": "lib/table.ts",
|
|
9728
|
-
"line":
|
|
9728
|
+
"line": 501
|
|
9729
9729
|
},
|
|
9730
9730
|
"parameters": [
|
|
9731
9731
|
{
|
|
@@ -9754,7 +9754,7 @@
|
|
|
9754
9754
|
"kind": "class",
|
|
9755
9755
|
"locationInModule": {
|
|
9756
9756
|
"filename": "lib/table.ts",
|
|
9757
|
-
"line":
|
|
9757
|
+
"line": 380
|
|
9758
9758
|
},
|
|
9759
9759
|
"methods": [
|
|
9760
9760
|
{
|
|
@@ -9764,7 +9764,7 @@
|
|
|
9764
9764
|
},
|
|
9765
9765
|
"locationInModule": {
|
|
9766
9766
|
"filename": "lib/table.ts",
|
|
9767
|
-
"line":
|
|
9767
|
+
"line": 392
|
|
9768
9768
|
},
|
|
9769
9769
|
"name": "fromTableAttributes",
|
|
9770
9770
|
"parameters": [
|
|
@@ -9813,7 +9813,7 @@
|
|
|
9813
9813
|
},
|
|
9814
9814
|
"locationInModule": {
|
|
9815
9815
|
"filename": "lib/table.ts",
|
|
9816
|
-
"line":
|
|
9816
|
+
"line": 425
|
|
9817
9817
|
},
|
|
9818
9818
|
"name": "validateTableName",
|
|
9819
9819
|
"parameters": [
|
|
@@ -9857,13 +9857,12 @@
|
|
|
9857
9857
|
},
|
|
9858
9858
|
{
|
|
9859
9859
|
"docs": {
|
|
9860
|
-
"remarks": "If the parent TableBucket of this table has encryption,\nyou should grant kms:Decrypt permission to use this key to the same principal.",
|
|
9861
9860
|
"stability": "experimental",
|
|
9862
|
-
"summary": "
|
|
9861
|
+
"summary": "[disable-awslint:no-grants]."
|
|
9863
9862
|
},
|
|
9864
9863
|
"locationInModule": {
|
|
9865
9864
|
"filename": "lib/table.ts",
|
|
9866
|
-
"line":
|
|
9865
|
+
"line": 140
|
|
9867
9866
|
},
|
|
9868
9867
|
"name": "grantRead",
|
|
9869
9868
|
"overrides": "@aws-cdk/aws-s3tables-alpha.ITable",
|
|
@@ -9883,13 +9882,12 @@
|
|
|
9883
9882
|
},
|
|
9884
9883
|
{
|
|
9885
9884
|
"docs": {
|
|
9886
|
-
"remarks": "If the parent TableBucket of this table has encryption,\nyou should grant kms:GenerateDataKey and kms:Decrypt permission\nto use this key to the same principal.",
|
|
9887
9885
|
"stability": "experimental",
|
|
9888
|
-
"summary": "
|
|
9886
|
+
"summary": "[disable-awslint:no-grants]."
|
|
9889
9887
|
},
|
|
9890
9888
|
"locationInModule": {
|
|
9891
9889
|
"filename": "lib/table.ts",
|
|
9892
|
-
"line":
|
|
9890
|
+
"line": 162
|
|
9893
9891
|
},
|
|
9894
9892
|
"name": "grantReadWrite",
|
|
9895
9893
|
"overrides": "@aws-cdk/aws-s3tables-alpha.ITable",
|
|
@@ -9909,13 +9907,12 @@
|
|
|
9909
9907
|
},
|
|
9910
9908
|
{
|
|
9911
9909
|
"docs": {
|
|
9912
|
-
"remarks": "If the parent TableBucket of this table has encryption,\nyou should grant kms:GenerateDataKey and kms:Decrypt permission\nto use this key to the same principal.",
|
|
9913
9910
|
"stability": "experimental",
|
|
9914
|
-
"summary": "
|
|
9911
|
+
"summary": "[disable-awslint:no-grants]."
|
|
9915
9912
|
},
|
|
9916
9913
|
"locationInModule": {
|
|
9917
9914
|
"filename": "lib/table.ts",
|
|
9918
|
-
"line":
|
|
9915
|
+
"line": 151
|
|
9919
9916
|
},
|
|
9920
9917
|
"name": "grantWrite",
|
|
9921
9918
|
"overrides": "@aws-cdk/aws-s3tables-alpha.ITable",
|
|
@@ -9945,7 +9942,7 @@
|
|
|
9945
9942
|
"immutable": true,
|
|
9946
9943
|
"locationInModule": {
|
|
9947
9944
|
"filename": "lib/table.ts",
|
|
9948
|
-
"line":
|
|
9945
|
+
"line": 383
|
|
9949
9946
|
},
|
|
9950
9947
|
"name": "PROPERTY_INJECTION_ID",
|
|
9951
9948
|
"static": true,
|
|
@@ -9961,7 +9958,7 @@
|
|
|
9961
9958
|
"immutable": true,
|
|
9962
9959
|
"locationInModule": {
|
|
9963
9960
|
"filename": "lib/table.ts",
|
|
9964
|
-
"line":
|
|
9961
|
+
"line": 492
|
|
9965
9962
|
},
|
|
9966
9963
|
"name": "namespace",
|
|
9967
9964
|
"type": {
|
|
@@ -9976,7 +9973,7 @@
|
|
|
9976
9973
|
"immutable": true,
|
|
9977
9974
|
"locationInModule": {
|
|
9978
9975
|
"filename": "lib/table.ts",
|
|
9979
|
-
"line":
|
|
9976
|
+
"line": 476
|
|
9980
9977
|
},
|
|
9981
9978
|
"name": "tableArn",
|
|
9982
9979
|
"overrides": "@aws-cdk/aws-s3tables-alpha.ITable",
|
|
@@ -9992,7 +9989,7 @@
|
|
|
9992
9989
|
"immutable": true,
|
|
9993
9990
|
"locationInModule": {
|
|
9994
9991
|
"filename": "lib/table.ts",
|
|
9995
|
-
"line":
|
|
9992
|
+
"line": 487
|
|
9996
9993
|
},
|
|
9997
9994
|
"name": "tableName",
|
|
9998
9995
|
"overrides": "@aws-cdk/aws-s3tables-alpha.ITable",
|
|
@@ -10008,7 +10005,7 @@
|
|
|
10008
10005
|
"immutable": true,
|
|
10009
10006
|
"locationInModule": {
|
|
10010
10007
|
"filename": "lib/table.ts",
|
|
10011
|
-
"line":
|
|
10008
|
+
"line": 497
|
|
10012
10009
|
},
|
|
10013
10010
|
"name": "tablePolicy",
|
|
10014
10011
|
"optional": true,
|
|
@@ -10023,7 +10020,7 @@
|
|
|
10023
10020
|
},
|
|
10024
10021
|
"locationInModule": {
|
|
10025
10022
|
"filename": "lib/table.ts",
|
|
10026
|
-
"line":
|
|
10023
|
+
"line": 499
|
|
10027
10024
|
},
|
|
10028
10025
|
"name": "autoCreatePolicy",
|
|
10029
10026
|
"protected": true,
|
|
@@ -10050,7 +10047,7 @@
|
|
|
10050
10047
|
"kind": "interface",
|
|
10051
10048
|
"locationInModule": {
|
|
10052
10049
|
"filename": "lib/table.ts",
|
|
10053
|
-
"line":
|
|
10050
|
+
"line": 365
|
|
10054
10051
|
},
|
|
10055
10052
|
"name": "TableAttributes",
|
|
10056
10053
|
"properties": [
|
|
@@ -10063,7 +10060,7 @@
|
|
|
10063
10060
|
"immutable": true,
|
|
10064
10061
|
"locationInModule": {
|
|
10065
10062
|
"filename": "lib/table.ts",
|
|
10066
|
-
"line":
|
|
10063
|
+
"line": 374
|
|
10067
10064
|
},
|
|
10068
10065
|
"name": "tableArn",
|
|
10069
10066
|
"type": {
|
|
@@ -10079,7 +10076,7 @@
|
|
|
10079
10076
|
"immutable": true,
|
|
10080
10077
|
"locationInModule": {
|
|
10081
10078
|
"filename": "lib/table.ts",
|
|
10082
|
-
"line":
|
|
10079
|
+
"line": 369
|
|
10083
10080
|
},
|
|
10084
10081
|
"name": "tableName",
|
|
10085
10082
|
"type": {
|
|
@@ -10108,7 +10105,7 @@
|
|
|
10108
10105
|
},
|
|
10109
10106
|
"locationInModule": {
|
|
10110
10107
|
"filename": "lib/table-bucket.ts",
|
|
10111
|
-
"line":
|
|
10108
|
+
"line": 589
|
|
10112
10109
|
},
|
|
10113
10110
|
"parameters": [
|
|
10114
10111
|
{
|
|
@@ -10137,7 +10134,7 @@
|
|
|
10137
10134
|
"kind": "class",
|
|
10138
10135
|
"locationInModule": {
|
|
10139
10136
|
"filename": "lib/table-bucket.ts",
|
|
10140
|
-
"line":
|
|
10137
|
+
"line": 407
|
|
10141
10138
|
},
|
|
10142
10139
|
"methods": [
|
|
10143
10140
|
{
|
|
@@ -10147,7 +10144,7 @@
|
|
|
10147
10144
|
},
|
|
10148
10145
|
"locationInModule": {
|
|
10149
10146
|
"filename": "lib/table-bucket.ts",
|
|
10150
|
-
"line":
|
|
10147
|
+
"line": 419
|
|
10151
10148
|
},
|
|
10152
10149
|
"name": "fromTableBucketArn",
|
|
10153
10150
|
"parameters": [
|
|
@@ -10193,7 +10190,7 @@
|
|
|
10193
10190
|
},
|
|
10194
10191
|
"locationInModule": {
|
|
10195
10192
|
"filename": "lib/table-bucket.ts",
|
|
10196
|
-
"line":
|
|
10193
|
+
"line": 430
|
|
10197
10194
|
},
|
|
10198
10195
|
"name": "fromTableBucketAttributes",
|
|
10199
10196
|
"parameters": [
|
|
@@ -10240,7 +10237,7 @@
|
|
|
10240
10237
|
},
|
|
10241
10238
|
"locationInModule": {
|
|
10242
10239
|
"filename": "lib/table-bucket.ts",
|
|
10243
|
-
"line":
|
|
10240
|
+
"line": 466
|
|
10244
10241
|
},
|
|
10245
10242
|
"name": "validateTableBucketName",
|
|
10246
10243
|
"parameters": [
|
|
@@ -10264,7 +10261,7 @@
|
|
|
10264
10261
|
},
|
|
10265
10262
|
"locationInModule": {
|
|
10266
10263
|
"filename": "lib/table-bucket.ts",
|
|
10267
|
-
"line":
|
|
10264
|
+
"line": 522
|
|
10268
10265
|
},
|
|
10269
10266
|
"name": "validateUnreferencedFileRemoval",
|
|
10270
10267
|
"parameters": [
|
|
@@ -10313,13 +10310,12 @@
|
|
|
10313
10310
|
},
|
|
10314
10311
|
{
|
|
10315
10312
|
"docs": {
|
|
10316
|
-
"remarks": "If encryption is used, permission to use the key to decrypt the contents\nof the bucket will also be granted to the same principal.",
|
|
10317
10313
|
"stability": "experimental",
|
|
10318
|
-
"summary": "
|
|
10314
|
+
"summary": "[disable-awslint:no-grants]."
|
|
10319
10315
|
},
|
|
10320
10316
|
"locationInModule": {
|
|
10321
10317
|
"filename": "lib/table-bucket.ts",
|
|
10322
|
-
"line":
|
|
10318
|
+
"line": 224
|
|
10323
10319
|
},
|
|
10324
10320
|
"name": "grantRead",
|
|
10325
10321
|
"overrides": "@aws-cdk/aws-s3tables-alpha.ITableBucket",
|
|
@@ -10345,13 +10341,12 @@
|
|
|
10345
10341
|
},
|
|
10346
10342
|
{
|
|
10347
10343
|
"docs": {
|
|
10348
|
-
"remarks": "If encryption is used, permission to use the key to encrypt/decrypt the contents\nof the bucket will also be granted to the same principal.",
|
|
10349
10344
|
"stability": "experimental",
|
|
10350
|
-
"summary": "
|
|
10345
|
+
"summary": "[disable-awslint:no-grants]."
|
|
10351
10346
|
},
|
|
10352
10347
|
"locationInModule": {
|
|
10353
10348
|
"filename": "lib/table-bucket.ts",
|
|
10354
|
-
"line":
|
|
10349
|
+
"line": 250
|
|
10355
10350
|
},
|
|
10356
10351
|
"name": "grantReadWrite",
|
|
10357
10352
|
"overrides": "@aws-cdk/aws-s3tables-alpha.ITableBucket",
|
|
@@ -10377,13 +10372,12 @@
|
|
|
10377
10372
|
},
|
|
10378
10373
|
{
|
|
10379
10374
|
"docs": {
|
|
10380
|
-
"remarks": "If encryption is used, permission to use the key to encrypt the contents\nof the bucket will also be granted to the same principal.",
|
|
10381
10375
|
"stability": "experimental",
|
|
10382
|
-
"summary": "
|
|
10376
|
+
"summary": "[disable-awslint:no-grants]."
|
|
10383
10377
|
},
|
|
10384
10378
|
"locationInModule": {
|
|
10385
10379
|
"filename": "lib/table-bucket.ts",
|
|
10386
|
-
"line":
|
|
10380
|
+
"line": 237
|
|
10387
10381
|
},
|
|
10388
10382
|
"name": "grantWrite",
|
|
10389
10383
|
"overrides": "@aws-cdk/aws-s3tables-alpha.ITableBucket",
|
|
@@ -10419,7 +10413,7 @@
|
|
|
10419
10413
|
"immutable": true,
|
|
10420
10414
|
"locationInModule": {
|
|
10421
10415
|
"filename": "lib/table-bucket.ts",
|
|
10422
|
-
"line":
|
|
10416
|
+
"line": 410
|
|
10423
10417
|
},
|
|
10424
10418
|
"name": "PROPERTY_INJECTION_ID",
|
|
10425
10419
|
"static": true,
|
|
@@ -10435,7 +10429,7 @@
|
|
|
10435
10429
|
"immutable": true,
|
|
10436
10430
|
"locationInModule": {
|
|
10437
10431
|
"filename": "lib/table-bucket.ts",
|
|
10438
|
-
"line":
|
|
10432
|
+
"line": 578
|
|
10439
10433
|
},
|
|
10440
10434
|
"name": "tableBucketArn",
|
|
10441
10435
|
"overrides": "@aws-cdk/aws-s3tables-alpha.ITableBucket",
|
|
@@ -10451,7 +10445,7 @@
|
|
|
10451
10445
|
"immutable": true,
|
|
10452
10446
|
"locationInModule": {
|
|
10453
10447
|
"filename": "lib/table-bucket.ts",
|
|
10454
|
-
"line":
|
|
10448
|
+
"line": 583
|
|
10455
10449
|
},
|
|
10456
10450
|
"name": "tableBucketName",
|
|
10457
10451
|
"overrides": "@aws-cdk/aws-s3tables-alpha.ITableBucket",
|
|
@@ -10467,7 +10461,7 @@
|
|
|
10467
10461
|
"immutable": true,
|
|
10468
10462
|
"locationInModule": {
|
|
10469
10463
|
"filename": "lib/table-bucket.ts",
|
|
10470
|
-
"line":
|
|
10464
|
+
"line": 585
|
|
10471
10465
|
},
|
|
10472
10466
|
"name": "encryptionKey",
|
|
10473
10467
|
"optional": true,
|
|
@@ -10484,7 +10478,7 @@
|
|
|
10484
10478
|
"immutable": true,
|
|
10485
10479
|
"locationInModule": {
|
|
10486
10480
|
"filename": "lib/table-bucket.ts",
|
|
10487
|
-
"line":
|
|
10481
|
+
"line": 573
|
|
10488
10482
|
},
|
|
10489
10483
|
"name": "tableBucketPolicy",
|
|
10490
10484
|
"optional": true,
|
|
@@ -10499,7 +10493,7 @@
|
|
|
10499
10493
|
},
|
|
10500
10494
|
"locationInModule": {
|
|
10501
10495
|
"filename": "lib/table-bucket.ts",
|
|
10502
|
-
"line":
|
|
10496
|
+
"line": 587
|
|
10503
10497
|
},
|
|
10504
10498
|
"name": "autoCreatePolicy",
|
|
10505
10499
|
"protected": true,
|
|
@@ -10526,7 +10520,7 @@
|
|
|
10526
10520
|
"kind": "interface",
|
|
10527
10521
|
"locationInModule": {
|
|
10528
10522
|
"filename": "lib/table-bucket.ts",
|
|
10529
|
-
"line":
|
|
10523
|
+
"line": 358
|
|
10530
10524
|
},
|
|
10531
10525
|
"name": "TableBucketAttributes",
|
|
10532
10526
|
"properties": [
|
|
@@ -10540,7 +10534,7 @@
|
|
|
10540
10534
|
"immutable": true,
|
|
10541
10535
|
"locationInModule": {
|
|
10542
10536
|
"filename": "lib/table-bucket.ts",
|
|
10543
|
-
"line":
|
|
10537
|
+
"line": 369
|
|
10544
10538
|
},
|
|
10545
10539
|
"name": "account",
|
|
10546
10540
|
"optional": true,
|
|
@@ -10558,7 +10552,7 @@
|
|
|
10558
10552
|
"immutable": true,
|
|
10559
10553
|
"locationInModule": {
|
|
10560
10554
|
"filename": "lib/table-bucket.ts",
|
|
10561
|
-
"line":
|
|
10555
|
+
"line": 387
|
|
10562
10556
|
},
|
|
10563
10557
|
"name": "encryptionKey",
|
|
10564
10558
|
"optional": true,
|
|
@@ -10576,7 +10570,7 @@
|
|
|
10576
10570
|
"immutable": true,
|
|
10577
10571
|
"locationInModule": {
|
|
10578
10572
|
"filename": "lib/table-bucket.ts",
|
|
10579
|
-
"line":
|
|
10573
|
+
"line": 363
|
|
10580
10574
|
},
|
|
10581
10575
|
"name": "region",
|
|
10582
10576
|
"optional": true,
|
|
@@ -10594,7 +10588,7 @@
|
|
|
10594
10588
|
"immutable": true,
|
|
10595
10589
|
"locationInModule": {
|
|
10596
10590
|
"filename": "lib/table-bucket.ts",
|
|
10597
|
-
"line":
|
|
10591
|
+
"line": 381
|
|
10598
10592
|
},
|
|
10599
10593
|
"name": "tableBucketArn",
|
|
10600
10594
|
"optional": true,
|
|
@@ -10612,7 +10606,7 @@
|
|
|
10612
10606
|
"immutable": true,
|
|
10613
10607
|
"locationInModule": {
|
|
10614
10608
|
"filename": "lib/table-bucket.ts",
|
|
10615
|
-
"line":
|
|
10609
|
+
"line": 375
|
|
10616
10610
|
},
|
|
10617
10611
|
"name": "tableBucketName",
|
|
10618
10612
|
"optional": true,
|
|
@@ -10831,7 +10825,7 @@
|
|
|
10831
10825
|
"kind": "interface",
|
|
10832
10826
|
"locationInModule": {
|
|
10833
10827
|
"filename": "lib/table-bucket.ts",
|
|
10834
|
-
"line":
|
|
10828
|
+
"line": 294
|
|
10835
10829
|
},
|
|
10836
10830
|
"name": "TableBucketProps",
|
|
10837
10831
|
"properties": [
|
|
@@ -10847,7 +10841,7 @@
|
|
|
10847
10841
|
"immutable": true,
|
|
10848
10842
|
"locationInModule": {
|
|
10849
10843
|
"filename": "lib/table-bucket.ts",
|
|
10850
|
-
"line":
|
|
10844
|
+
"line": 299
|
|
10851
10845
|
},
|
|
10852
10846
|
"name": "tableBucketName",
|
|
10853
10847
|
"type": {
|
|
@@ -10864,7 +10858,7 @@
|
|
|
10864
10858
|
"immutable": true,
|
|
10865
10859
|
"locationInModule": {
|
|
10866
10860
|
"filename": "lib/table-bucket.ts",
|
|
10867
|
-
"line":
|
|
10861
|
+
"line": 321
|
|
10868
10862
|
},
|
|
10869
10863
|
"name": "account",
|
|
10870
10864
|
"optional": true,
|
|
@@ -10883,7 +10877,7 @@
|
|
|
10883
10877
|
"immutable": true,
|
|
10884
10878
|
"locationInModule": {
|
|
10885
10879
|
"filename": "lib/table-bucket.ts",
|
|
10886
|
-
"line":
|
|
10880
|
+
"line": 331
|
|
10887
10881
|
},
|
|
10888
10882
|
"name": "encryption",
|
|
10889
10883
|
"optional": true,
|
|
@@ -10902,7 +10896,7 @@
|
|
|
10902
10896
|
"immutable": true,
|
|
10903
10897
|
"locationInModule": {
|
|
10904
10898
|
"filename": "lib/table-bucket.ts",
|
|
10905
|
-
"line":
|
|
10899
|
+
"line": 342
|
|
10906
10900
|
},
|
|
10907
10901
|
"name": "encryptionKey",
|
|
10908
10902
|
"optional": true,
|
|
@@ -10920,7 +10914,7 @@
|
|
|
10920
10914
|
"immutable": true,
|
|
10921
10915
|
"locationInModule": {
|
|
10922
10916
|
"filename": "lib/table-bucket.ts",
|
|
10923
|
-
"line":
|
|
10917
|
+
"line": 314
|
|
10924
10918
|
},
|
|
10925
10919
|
"name": "region",
|
|
10926
10920
|
"optional": true,
|
|
@@ -10938,7 +10932,7 @@
|
|
|
10938
10932
|
"immutable": true,
|
|
10939
10933
|
"locationInModule": {
|
|
10940
10934
|
"filename": "lib/table-bucket.ts",
|
|
10941
|
-
"line":
|
|
10935
|
+
"line": 349
|
|
10942
10936
|
},
|
|
10943
10937
|
"name": "removalPolicy",
|
|
10944
10938
|
"optional": true,
|
|
@@ -10960,7 +10954,7 @@
|
|
|
10960
10954
|
"immutable": true,
|
|
10961
10955
|
"locationInModule": {
|
|
10962
10956
|
"filename": "lib/table-bucket.ts",
|
|
10963
|
-
"line":
|
|
10957
|
+
"line": 307
|
|
10964
10958
|
},
|
|
10965
10959
|
"name": "unreferencedFileRemoval",
|
|
10966
10960
|
"optional": true,
|
|
@@ -11144,7 +11138,7 @@
|
|
|
11144
11138
|
"kind": "interface",
|
|
11145
11139
|
"locationInModule": {
|
|
11146
11140
|
"filename": "lib/table.ts",
|
|
11147
|
-
"line":
|
|
11141
|
+
"line": 195
|
|
11148
11142
|
},
|
|
11149
11143
|
"name": "TableProps",
|
|
11150
11144
|
"properties": [
|
|
@@ -11157,7 +11151,7 @@
|
|
|
11157
11151
|
"immutable": true,
|
|
11158
11152
|
"locationInModule": {
|
|
11159
11153
|
"filename": "lib/table.ts",
|
|
11160
|
-
"line":
|
|
11154
|
+
"line": 203
|
|
11161
11155
|
},
|
|
11162
11156
|
"name": "namespace",
|
|
11163
11157
|
"type": {
|
|
@@ -11174,7 +11168,7 @@
|
|
|
11174
11168
|
"immutable": true,
|
|
11175
11169
|
"locationInModule": {
|
|
11176
11170
|
"filename": "lib/table.ts",
|
|
11177
|
-
"line":
|
|
11171
|
+
"line": 207
|
|
11178
11172
|
},
|
|
11179
11173
|
"name": "openTableFormat",
|
|
11180
11174
|
"type": {
|
|
@@ -11190,7 +11184,7 @@
|
|
|
11190
11184
|
"immutable": true,
|
|
11191
11185
|
"locationInModule": {
|
|
11192
11186
|
"filename": "lib/table.ts",
|
|
11193
|
-
"line":
|
|
11187
|
+
"line": 199
|
|
11194
11188
|
},
|
|
11195
11189
|
"name": "tableName",
|
|
11196
11190
|
"type": {
|
|
@@ -11208,7 +11202,7 @@
|
|
|
11208
11202
|
"immutable": true,
|
|
11209
11203
|
"locationInModule": {
|
|
11210
11204
|
"filename": "lib/table.ts",
|
|
11211
|
-
"line":
|
|
11205
|
+
"line": 213
|
|
11212
11206
|
},
|
|
11213
11207
|
"name": "compaction",
|
|
11214
11208
|
"optional": true,
|
|
@@ -11226,7 +11220,7 @@
|
|
|
11226
11220
|
"immutable": true,
|
|
11227
11221
|
"locationInModule": {
|
|
11228
11222
|
"filename": "lib/table.ts",
|
|
11229
|
-
"line":
|
|
11223
|
+
"line": 218
|
|
11230
11224
|
},
|
|
11231
11225
|
"name": "icebergMetadata",
|
|
11232
11226
|
"optional": true,
|
|
@@ -11244,7 +11238,7 @@
|
|
|
11244
11238
|
"immutable": true,
|
|
11245
11239
|
"locationInModule": {
|
|
11246
11240
|
"filename": "lib/table.ts",
|
|
11247
|
-
"line":
|
|
11241
|
+
"line": 229
|
|
11248
11242
|
},
|
|
11249
11243
|
"name": "removalPolicy",
|
|
11250
11244
|
"optional": true,
|
|
@@ -11262,7 +11256,7 @@
|
|
|
11262
11256
|
"immutable": true,
|
|
11263
11257
|
"locationInModule": {
|
|
11264
11258
|
"filename": "lib/table.ts",
|
|
11265
|
-
"line":
|
|
11259
|
+
"line": 223
|
|
11266
11260
|
},
|
|
11267
11261
|
"name": "snapshotManagement",
|
|
11268
11262
|
"optional": true,
|
|
@@ -11281,7 +11275,7 @@
|
|
|
11281
11275
|
"immutable": true,
|
|
11282
11276
|
"locationInModule": {
|
|
11283
11277
|
"filename": "lib/table.ts",
|
|
11284
|
-
"line":
|
|
11278
|
+
"line": 237
|
|
11285
11279
|
},
|
|
11286
11280
|
"name": "withoutMetadata",
|
|
11287
11281
|
"optional": true,
|
|
@@ -11410,6 +11404,6 @@
|
|
|
11410
11404
|
"symbolId": "lib/table-bucket:UnreferencedFileRemovalStatus"
|
|
11411
11405
|
}
|
|
11412
11406
|
},
|
|
11413
|
-
"version": "2.
|
|
11407
|
+
"version": "2.235.1-alpha.0",
|
|
11414
11408
|
"fingerprint": "**********"
|
|
11415
11409
|
}
|
package/awslint.json
CHANGED
|
@@ -7,6 +7,13 @@
|
|
|
7
7
|
"duration-prop-name:@aws-cdk/aws-s3tables-alpha.UnreferencedFileRemoval.unreferencedDays",
|
|
8
8
|
"attribute-tag:@aws-cdk/aws-s3tables-alpha.TableBucket.tableBucketPolicy",
|
|
9
9
|
"attribute-tag:@aws-cdk/aws-s3tables-alpha.Table.tablePolicy",
|
|
10
|
-
"props-physical-name:@aws-cdk/aws-s3tables-alpha.TablePolicyProps"
|
|
10
|
+
"props-physical-name:@aws-cdk/aws-s3tables-alpha.TablePolicyProps",
|
|
11
|
+
"prefer-ref-interface:@aws-cdk/aws-s3tables-alpha.NamespaceAttributes.tableBucket",
|
|
12
|
+
"prefer-ref-interface:@aws-cdk/aws-s3tables-alpha.NamespaceProps.tableBucket",
|
|
13
|
+
"prefer-ref-interface:@aws-cdk/aws-s3tables-alpha.TableProps.namespace",
|
|
14
|
+
"prefer-ref-interface:@aws-cdk/aws-s3tables-alpha.TableBucketAttributes.encryptionKey",
|
|
15
|
+
"prefer-ref-interface:@aws-cdk/aws-s3tables-alpha.TableBucketProps.encryptionKey",
|
|
16
|
+
"prefer-ref-interface:@aws-cdk/aws-s3tables-alpha.TableBucketPolicyProps.tableBucket",
|
|
17
|
+
"prefer-ref-interface:@aws-cdk/aws-s3tables-alpha.TablePolicyProps.table"
|
|
11
18
|
]
|
|
12
19
|
}
|
package/lib/namespace.js
CHANGED
|
@@ -61,7 +61,7 @@ let Namespace = (() => {
|
|
|
61
61
|
Namespace = _classThis = _classDescriptor.value;
|
|
62
62
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
63
63
|
}
|
|
64
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-s3tables-alpha.Namespace", version: "2.
|
|
64
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-s3tables-alpha.Namespace", version: "2.235.1-alpha.0" };
|
|
65
65
|
/** Uniquely identifies this class. */
|
|
66
66
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-s3tables-alpha.Namespace';
|
|
67
67
|
/**
|
|
@@ -62,7 +62,7 @@ let TableBucketPolicy = (() => {
|
|
|
62
62
|
TableBucketPolicy = _classThis = _classDescriptor.value;
|
|
63
63
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
64
64
|
}
|
|
65
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-s3tables-alpha.TableBucketPolicy", version: "2.
|
|
65
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-s3tables-alpha.TableBucketPolicy", version: "2.235.1-alpha.0" };
|
|
66
66
|
/** Uniquely identifies this class. */
|
|
67
67
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-s3tables-alpha.TableBucketPolicy';
|
|
68
68
|
/**
|
package/lib/table-bucket.d.ts
CHANGED
|
@@ -175,8 +175,17 @@ declare abstract class TableBucketBase extends Resource implements ITableBucket
|
|
|
175
175
|
* silently, which may be confusing.
|
|
176
176
|
*/
|
|
177
177
|
addToResourcePolicy(statement: iam.PolicyStatement): iam.AddToResourcePolicyResult;
|
|
178
|
+
/**
|
|
179
|
+
* [disable-awslint:no-grants]
|
|
180
|
+
*/
|
|
178
181
|
grantRead(identity: iam.IGrantable, tableId: string): iam.Grant;
|
|
182
|
+
/**
|
|
183
|
+
* [disable-awslint:no-grants]
|
|
184
|
+
*/
|
|
179
185
|
grantWrite(identity: iam.IGrantable, tableId: string): iam.Grant;
|
|
186
|
+
/**
|
|
187
|
+
* [disable-awslint:no-grants]
|
|
188
|
+
*/
|
|
180
189
|
grantReadWrite(identity: iam.IGrantable, tableId: string): iam.Grant;
|
|
181
190
|
/**
|
|
182
191
|
* Grants the given s3tables permissions to the provided principal
|
package/lib/table-bucket.js
CHANGED
|
@@ -109,12 +109,21 @@ class TableBucketBase extends core_1.Resource {
|
|
|
109
109
|
}
|
|
110
110
|
return { statementAdded: false };
|
|
111
111
|
}
|
|
112
|
+
/**
|
|
113
|
+
* [disable-awslint:no-grants]
|
|
114
|
+
*/
|
|
112
115
|
grantRead(identity, tableId) {
|
|
113
116
|
return this.grant(identity, perms.TABLE_BUCKET_READ_ACCESS, perms.KEY_READ_ACCESS, this.tableBucketArn, this.getTableArn(tableId));
|
|
114
117
|
}
|
|
118
|
+
/**
|
|
119
|
+
* [disable-awslint:no-grants]
|
|
120
|
+
*/
|
|
115
121
|
grantWrite(identity, tableId) {
|
|
116
122
|
return this.grant(identity, perms.TABLE_BUCKET_WRITE_ACCESS, perms.KEY_READ_WRITE_ACCESS, this.tableBucketArn, this.getTableArn(tableId));
|
|
117
123
|
}
|
|
124
|
+
/**
|
|
125
|
+
* [disable-awslint:no-grants]
|
|
126
|
+
*/
|
|
118
127
|
grantReadWrite(identity, tableId) {
|
|
119
128
|
return this.grant(identity, perms.TABLE_BUCKET_READ_WRITE_ACCESS, perms.KEY_WRITE_ACCESS, this.tableBucketArn, this.getTableArn(tableId));
|
|
120
129
|
}
|
|
@@ -170,7 +179,7 @@ let TableBucket = (() => {
|
|
|
170
179
|
TableBucket = _classThis = _classDescriptor.value;
|
|
171
180
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
172
181
|
}
|
|
173
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-s3tables-alpha.TableBucket", version: "2.
|
|
182
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-s3tables-alpha.TableBucket", version: "2.235.1-alpha.0" };
|
|
174
183
|
/** Uniquely identifies this class. */
|
|
175
184
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-s3tables-alpha.TableBucket';
|
|
176
185
|
/**
|
|
@@ -447,4 +456,4 @@ let TableBucket = (() => {
|
|
|
447
456
|
return TableBucket = _classThis;
|
|
448
457
|
})();
|
|
449
458
|
exports.TableBucket = TableBucket;
|
|
450
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYnVja2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidGFibGUtYnVja2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJCQUF5QjtBQUN6QiwyQ0FBMkM7QUFDM0MsMkNBQTJDO0FBQzNDLHFEQUFxRDtBQUNyRCwyQ0FBc0c7QUFDdEcsOEVBQThFO0FBQzlFLDBFQUEwRTtBQUUxRSx1Q0FBdUM7QUFDdkMsK0RBQTBEO0FBQzFELGlDQUF1RDtBQTBIdkQ7O0dBRUc7QUFDSCxJQUFZLDZCQVVYO0FBVkQsV0FBWSw2QkFBNkI7SUFDdkM7O09BRUc7SUFDSCxvREFBbUIsQ0FBQTtJQUVuQjs7T0FFRztJQUNILHNEQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFWVyw2QkFBNkIsNkNBQTdCLDZCQUE2QixRQVV4QztBQUVEOztHQUVHO0FBQ0gsSUFBWSxxQkFXWDtBQVhELFdBQVkscUJBQXFCO0lBQy9COzs7T0FHRztJQUNILHdDQUFlLENBQUE7SUFFZjs7T0FFRztJQUNILDhDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFYVyxxQkFBcUIscUNBQXJCLHFCQUFxQixRQVdoQztBQUVELE1BQWUsZUFBZ0IsU0FBUSxlQUFRO0lBb0I3Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQW1CRztJQUNJLG1CQUFtQixDQUN4QixTQUE4QjtRQUU5QixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3JELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLHVDQUFpQixDQUFDLElBQUksRUFBRSxlQUFlLEVBQUU7Z0JBQ3BFLFdBQVcsRUFBRSxJQUFJO2FBQ2xCLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMs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Q0FBQyxHQUFHLENBQUM7Z0JBQ2hCLFVBQVUsRUFBRTtvQkFDVixVQUFVLEVBQUU7d0JBQ1Ysa0NBQWtDLEVBQUUsT0FBTyxTQUFTLGFBQWEsTUFBTSxJQUFJLE9BQU8sV0FBVyxlQUFlLElBQUk7cUJBQ2pIO2lCQUNGO2FBQ0YsQ0FBQyxDQUFDLENBQUM7U0FDTDs7WUE5U1UsdURBQVc7Ozs7O0FBQVgsa0NBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFT0wgfSBmcm9tICdvcyc7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyBrbXMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWttcyc7XG5pbXBvcnQgKiBhcyBzM3RhYmxlcyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczN0YWJsZXMnO1xuaW1wb3J0IHsgUmVzb3VyY2UsIElSZXNvdXJjZSwgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IsIFJlbW92YWxQb2xpY3ksIFRva2VuIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5pbXBvcnQgeyBhZGRDb25zdHJ1Y3RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcbmltcG9ydCB7IHByb3BlcnR5SW5qZWN0YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL3Byb3AtaW5qZWN0YWJsZSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIHBlcm1zIGZyb20gJy4vcGVybWlzc2lvbnMnO1xuaW1wb3J0IHsgVGFibGVCdWNrZXRQb2xpY3kgfSBmcm9tICcuL3RhYmxlLWJ1Y2tldC1wb2xpY3knO1xuaW1wb3J0IHsgdmFsaWRhdGVUYWJsZUJ1Y2tldEF0dHJpYnV0ZXMgfSBmcm9tICcuL3V0aWwnO1xuXG4vKipcbiAqIEludGVyZmFjZSBkZWZpbml0aW9uIGZvciBTMyBUYWJsZSBCdWNrZXRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVRhYmxlQnVja2V0IGV4dGVuZHMgSVJlc291cmNlIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIHRhYmxlIGJ1Y2tldC5cbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgdGFibGVCdWNrZXRBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHRhYmxlIGJ1Y2tldC5cbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgdGFibGVCdWNrZXROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBhY2NvdW50SWQgY29udGFpbmluZyB0aGUgdGFibGUgYnVja2V0LlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVnaW9uIGNvbnRhaW5pbmcgdGhlIHRhYmxlIGJ1Y2tldC5cbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBLTVMgZW5jcnlwdGlvbiBrZXkgYXNzb2NpYXRlZCB3aXRoIHRoaXMgdGFibGUgYnVja2V0LlxuICAgKi9cbiAgcmVhZG9ubHkgZW5jcnlwdGlvbktleT86IGttcy5JS2V5O1xuXG4gIC8qKlxuICAgKiBBZGRzIGEgc3RhdGVtZW50IHRvIHRoZSByZXNvdXJjZSBwb2xpY3kgZm9yIGEgcHJpbmNpcGFsIChpLmUuXG4gICAqIGFjY291bnQvcm9sZS9zZXJ2aWNlKSB0byBwZXJmb3JtIGFjdGlvbnMgb24gdGhpcyB0YWJsZSBidWNrZXQgYW5kL29yIGl0c1xuICAgKiB0YWJsZXMuXG4gICAqXG4gICAqIE5vdGUgdGhhdCB0aGUgcG9saWN5IHN0YXRlbWVudCBtYXkgb3IgbWF5IG5vdCBiZSBhZGRlZCB0byB0aGUgcG9saWN5LlxuICAgKiBGb3IgZXhhbXBsZSwgd2hlbiBhbiBgSVRhYmxlQnVja2V0YCBpcyBjcmVhdGVkIGZyb20gYW4gZXhpc3RpbmcgdGFibGUgYnVja2V0LFxuICAgKiBpdCdzIG5vdCBwb3NzaWJsZSB0byB0ZWxsIHdoZXRoZXIgdGhlIGJ1Y2tldCBhbHJlYWR5IGhhcyBhIHBvbGljeVxuICAgKiBhdHRhY2hlZCwgbGV0IGFsb25lIHRvIHJlLXVzZSB0aGF0IHBvbGljeSB0byBhZGQgbW9yZSBzdGF0ZW1lbnRzIHRvIGl0LlxuICAgKiBTbyBpdCdzIHNhZmVzdCB0byBkbyBub3RoaW5nIGluIHRoZXNlIGNhc2VzLlxuICAgKlxuICAgKiBAcGFyYW0gc3RhdGVtZW50IHRoZSBwb2xpY3kgc3RhdGVtZW50IHRvIGJlIGFkZGVkIHRvIHRoZSBidWNrZXQnc1xuICAgKiBwb2xpY3kuXG4gICAqIEByZXR1cm5zIG1ldGFkYXRhIGFib3V0IHRoZSBleGVjdXRpb24gb2YgdGhpcyBtZXRob2QuIElmIHRoZSBwb2xpY3lcbiAgICogd2FzIG5vdCBhZGRlZCwgdGhlIHZhbHVlIG9mIGBzdGF0ZW1lbnRBZGRlZGAgd2lsbCBiZSBgZmFsc2VgLiBZb3VcbiAgICogc2hvdWxkIGFsd2F5cyBjaGVjayB0aGlzIHZhbHVlIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBvcGVyYXRpb24gd2FzXG4gICAqIGFjdHVhbGx5IGNhcnJpZWQgb3V0LiBPdGhlcndpc2UsIHN5bnRoZXNpcyBhbmQgZGVwbG95IHdpbGwgdGVybWluYXRlXG4gICAqIHNpbGVudGx5LCB3aGljaCBtYXkgYmUgY29uZnVzaW5nLlxuICAgKi9cbiAgYWRkVG9SZXNvdXJjZVBvbGljeShzdGF0ZW1lbnQ6IGlhbS5Qb2xpY3lTdGF0ZW1lbnQpOiBpYW0uQWRkVG9SZXNvdXJjZVBvbGljeVJlc3VsdDtcblxuICAvKipcbiAgICogR3JhbnQgcmVhZCBwZXJtaXNzaW9ucyBmb3IgdGhpcyB0YWJsZSBidWNrZXQgYW5kIGl0cyB0YWJsZXNcbiAgICogdG8gYW4gSUFNIHByaW5jaXBhbCAoUm9sZS9Hcm91cC9Vc2VyKS5cbiAgICpcbiAgICogSWYgZW5jcnlwdGlvbiBpcyB1c2VkLCBwZXJtaXNzaW9uIHRvIHVzZSB0aGUga2V5IHRvIGRlY3J5cHQgdGhlIGNvbnRlbnRzXG4gICAqIG9mIHRoZSBidWNrZXQgd2lsbCBhbHNvIGJlIGdyYW50ZWQgdG8gdGhlIHNhbWUgcHJpbmNpcGFsLlxuICAgKlxuICAgKiBAcGFyYW0gaWRlbnRpdHkgVGhlIHByaW5jaXBhbCB0byBhbGxvdyByZWFkIHBlcm1pc3Npb25zIHRvXG4gICAqIEBwYXJhbSB0YWJsZUlkIEFsbG93IHRoZSBwZXJtaXNzaW9ucyB0byBhbGwgdGFibGVzIHVzaW5nICcqJyBvciB0byBzaW5nbGUgdGFibGUgYnkgaXRzIHVuaXF1ZSBJRC5cbiAgICovXG4gIGdyYW50UmVhZChpZGVudGl0eTogaWFtLklHcmFudGFibGUsIHRhYmxlSWQ6IHN0cmluZyk6IGlhbS5HcmFudDtcblxuICAvKipcbiAgICogR3JhbnQgd3JpdGUgcGVybWlzc2lvbnMgZm9yIHRoaXMgdGFibGUgYnVja2V0IGFuZCBpdHMgdGFibGVzXG4gICAqIHRvIGFuIElBTSBwcmluY2lwYWwgKFJvbGUvR3JvdXAvVXNlcikuXG4gICAqXG4gICAqIElmIGVuY3J5cHRpb24gaXMgdXNlZCwgcGVybWlzc2lvbiB0byB1c2UgdGhlIGtleSB0byBlbmNyeXB0IHRoZSBjb250ZW50c1xuICAgKiBvZiB0aGUgYnVja2V0IHdpbGwgYWxzbyBiZSBncmFudGVkIHRvIHRoZSBzYW1lIHByaW5jaXBhbC5cbiAgICpcbiAgICogQHBhcmFtIGlkZW50aXR5IFRoZSBwcmluY2lwYWwgdG8gYWxsb3cgd3JpdGUgcGVybWlzc2lvbnMgdG9cbiAgICogQHBhcmFtIHRhYmxlSWQgQWxsb3cgdGhlIHBlcm1pc3Npb25zIHRvIGFsbCB0YWJsZXMgdXNpbmcgJyonIG9yIHRvIHNpbmdsZSB0YWJsZSBieSBpdHMgdW5pcXVlIElELlxuICAgKi9cbiAgZ3JhbnRXcml0ZShpZGVudGl0eTogaWFtLklHcmFudGFibGUsIHRhYmxlSWQ6IHN0cmluZyk6IGlhbS5HcmFudDtcblxuICAvKipcbiAgICogR3JhbnQgcmVhZCBhbmQgd3JpdGUgcGVybWlzc2lvbnMgZm9yIHRoaXMgdGFibGUgYnVja2V0IGFuZCBpdHMgdGFibGVzXG4gICAqIHRvIGFuIElBTSBwcmluY2lwYWwgKFJvbGUvR3JvdXAvVXNlcikuXG4gICAqXG4gICAqIElmIGVuY3J5cHRpb24gaXMgdXNlZCwgcGVybWlzc2lvbiB0byB1c2UgdGhlIGtleSB0byBlbmNyeXB0L2RlY3J5cHQgdGhlIGNvbnRlbnRzXG4gICAqIG9mIHRoZSBidWNrZXQgd2lsbCBhbHNvIGJlIGdyYW50ZWQgdG8gdGhlIHNhbWUgcHJpbmNpcGFsLlxuICAgKlxuICAgKiBAcGFyYW0gaWRlbnRpdHkgVGhlIHByaW5jaXBhbCB0byBhbGxvdyByZWFkIGFuZCB3cml0ZSBwZXJtaXNzaW9ucyB0b1xuICAgKiBAcGFyYW0gdGFibGVJZCBBbGxvdyB0aGUgcGVybWlzc2lvbnMgdG8gYWxsIHRhYmxlcyB1c2luZyAnKicgb3IgdG8gc2luZ2xlIHRhYmxlIGJ5IGl0cyB1bmlxdWUgSUQuXG4gICAqL1xuICBncmFudFJlYWRXcml0ZShpZGVudGl0eTogaWFtLklHcmFudGFibGUsIHRhYmxlSWQ6IHN0cmluZyk6IGlhbS5HcmFudDtcbn1cblxuLyoqXG4gKiBVbnJlZmVyZW5jZWQgZmlsZSByZW1vdmFsIHNldHRpbmdzIGZvciB0aGUgdGhpcyB0YWJsZSBidWNrZXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVW5yZWZlcmVuY2VkRmlsZVJlbW92YWwge1xuICAvKipcbiAgICogRHVyYXRpb24gYWZ0ZXIgd2hpY2ggbm9uY3VycmVudCBmaWxlcyBzaG91bGQgYmUgcmVtb3ZlZC4gU2hvdWxkIGJlIGF0IGxlYXN0IG9uZSBkYXkuXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvczMtdGFibGUtYnVja2V0cy1tYWludGVuYW5jZS5odG1sXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gU2VlIFMzIFRhYmxlcyBVc2VyIEd1aWRlXG4gICAqL1xuICByZWFkb25seSBub25jdXJyZW50RGF5cz86IG51bWJlcjtcblxuICAvKipcbiAgICogU3RhdHVzIG9mIHVucmVmZXJlbmNlZCBmaWxlIHJlbW92YWwuIENhbiBiZSBFbmFibGVkIG9yIERpc2FibGVkLlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlcmd1aWRlL3MzLXRhYmxlLWJ1Y2tldHMtbWFpbnRlbmFuY2UuaHRtbFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFNlZSBTMyBUYWJsZXMgVXNlciBHdWlkZVxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdHVzPzogVW5yZWZlcmVuY2VkRmlsZVJlbW92YWxTdGF0dXM7XG5cbiAgLyoqXG4gICAqIER1cmF0aW9uIGFmdGVyIHdoaWNoIHVucmVmZXJlbmNlZCBmaWxlcyBzaG91bGQgYmUgcmVtb3ZlZC4gU2hvdWxkIGJlIGF0IGxlYXN0IG9uZSBkYXkuXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvczMtdGFibGUtYnVja2V0cy1tYWludGVuYW5jZS5odG1sXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gU2VlIFMzIFRhYmxlcyBVc2VyIEd1aWRlXG4gICAqL1xuICByZWFkb25seSB1bnJlZmVyZW5jZWREYXlzPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIENvbnRyb2xzIHdoZXRoZXIgdW5yZWZlcmVuY2VkIGZpbGUgcmVtb3ZhbCBpcyBlbmFibGVkIG9yIGRpc2FibGVkLlxuICovXG5leHBvcnQgZW51bSBVbnJlZmVyZW5jZWRGaWxlUmVtb3ZhbFN0YXR1cyB7XG4gIC8qKlxuICAgKiBFbmFibGUgdW5yZWZlcmVuY2VkIGZpbGUgcmVtb3ZhbC5cbiAgICovXG4gIEVOQUJMRUQgPSAnRW5hYmxlZCcsXG5cbiAgLyoqXG4gICAqIERpc2FibGUgdW5yZWZlcmVuY2VkIGZpbGUgcmVtb3ZhbC5cbiAgICovXG4gIERJU0FCTEVEID0gJ0Rpc2FibGVkJyxcbn1cblxuLyoqXG4gKiBDb250cm9scyBTZXJ2ZXIgU2lkZSBFbmNyeXB0aW9uIChTU0UpIGZvciB0aGlzIFRhYmxlQnVja2V0LlxuICovXG5leHBvcnQgZW51bSBUYWJsZUJ1Y2tldEVuY3J5cHRpb24ge1xuICAvKipcbiAgICogVXNlIGEgY3VzdG9tZXIgZGVmaW5lZCBLTVMga2V5IGZvciBlbmNyeXB0aW9uXG4gICAqIElmIGBlbmNyeXB0aW9uS2V5YCBpcyBzcGVjaWZpZWQsIHRoaXMga2V5IHdpbGwgYmUgdXNlZCwgb3RoZXJ3aXNlLCBvbmUgd2lsbCBiZSBkZWZpbmVkLlxuICAgKi9cbiAgS01TID0gJ2F3czprbXMnLFxuXG4gIC8qKlxuICAgKiBVc2UgUzMgbWFuYWdlZCBlbmNyeXB0aW9uIGtleXMgd2l0aCBBRVMyNTYgZW5jcnlwdGlvblxuICAgKi9cbiAgUzNfTUFOQUdFRCA9ICdBRVMyNTYnLFxufVxuXG5hYnN0cmFjdCBjbGFzcyBUYWJsZUJ1Y2tldEJhc2UgZXh0ZW5kcyBSZXNvdXJjZSBpbXBsZW1lbnRzIElUYWJsZUJ1Y2tldCB7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB0YWJsZUJ1Y2tldEFybjogc3RyaW5nO1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgdGFibGVCdWNrZXROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvdXJjZSBwb2xpY3kgYXNzb2NpYXRlZCB3aXRoIHRoaXMgdGFibGUgYnVja2V0LlxuICAgKlxuICAgKiBJZiBgYXV0b0NyZWF0ZVBvbGljeWAgaXMgdHJ1ZSwgYSBgVGFibGVCdWNrZXRQb2xpY3lgIHdpbGwgYmUgY3JlYXRlZCB1cG9uIHRoZVxuICAgKiBmaXJzdCBjYWxsIHRvIGFkZFRvUmVzb3VyY2VQb2xpY3kocykuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgdGFibGVCdWNrZXRQb2xpY3k/OiBUYWJsZUJ1Y2tldFBvbGljeTtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIGEgdGFibGUgYnVja2V0IHJlc291cmNlIHBvbGljeSBzaG91bGQgYXV0b21hdGljYWxseSBjcmVhdGVkIHVwb25cbiAgICogdGhlIGZpcnN0IGNhbGwgdG8gYGFkZFRvUmVzb3VyY2VQb2xpY3lgLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGF1dG9DcmVhdGVQb2xpY3k6IGJvb2xlYW47XG5cbiAgcHVibGljIGFic3RyYWN0IGVuY3J5cHRpb25LZXk/OiBrbXMuSUtleSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQWRkcyBhIHN0YXRlbWVudCB0byB0aGUgcmVzb3VyY2UgcG9saWN5IGZvciBhIHByaW5jaXBhbCAoaS5lLlxuICAgKiBhY2NvdW50L3JvbGUvc2VydmljZSkgdG8gcGVyZm9ybSBhY3Rpb25zIG9uIHRoaXMgdGFibGUgYnVja2V0IGFuZC9vciBpdHNcbiAgICogY29udGVudHMuIFVzZSBgdGFibGVCdWNrZXRBcm5gIGFuZCBgYXJuRm9yT2JqZWN0cyhrZXlzKWAgdG8gb2J0YWluIEFSTnMgZm9yXG4gICAqIHRoaXMgYnVja2V0IG9yIG9iamVjdHMuXG4gICAqXG4gICAqIE5vdGUgdGhhdCB0aGUgcG9saWN5IHN0YXRlbWVudCBtYXkgb3IgbWF5IG5vdCBiZSBhZGRlZCB0byB0aGUgcG9saWN5LlxuICAgKiBGb3IgZXhhbXBsZSwgd2hlbiBhbiBgSVRhYmxlQnVja2V0YCBpcyBjcmVhdGVkIGZyb20gYW4gZXhpc3RpbmcgdGFibGUgYnVja2V0LFxuICAgKiBpdCdzIG5vdCBwb3NzaWJsZSB0byB0ZWxsIHdoZXRoZXIgdGhlIGJ1Y2tldCBhbHJlYWR5IGhhcyBhIHBvbGljeVxuICAgKiBhdHRhY2hlZCwgbGV0IGFsb25lIHRvIHJlLXVzZSB0aGF0IHBvbGljeSB0byBhZGQgbW9yZSBzdGF0ZW1lbnRzIHRvIGl0LlxuICAgKiBTbyBpdCdzIHNhZmVzdCB0byBkbyBub3RoaW5nIGluIHRoZXNlIGNhc2VzLlxuICAgKlxuICAgKiBAcGFyYW0gc3RhdGVtZW50IHRoZSBwb2xpY3kgc3RhdGVtZW50IHRvIGJlIGFkZGVkIHRvIHRoZSBidWNrZXQnc1xuICAgKiBwb2xpY3kuXG4gICAqIEByZXR1cm5zIG1ldGFkYXRhIGFib3V0IHRoZSBleGVjdXRpb24gb2YgdGhpcyBtZXRob2QuIElmIHRoZSBwb2xpY3lcbiAgICogd2FzIG5vdCBhZGRlZCwgdGhlIHZhbHVlIG9mIGBzdGF0ZW1lbnRBZGRlZGAgd2lsbCBiZSBgZmFsc2VgLiBZb3VcbiAgICogc2hvdWxkIGFsd2F5cyBjaGVjayB0aGlzIHZhbHVlIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBvcGVyYXRpb24gd2FzXG4gICAqIGFjdHVhbGx5IGNhcnJpZWQgb3V0LiBPdGhlcndpc2UsIHN5bnRoZXNpcyBhbmQgZGVwbG95IHdpbGwgdGVybWluYXRlXG4gICAqIHNpbGVudGx5LCB3aGljaCBtYXkgYmUgY29uZnVzaW5nLlxuICAgKi9cbiAgcHVibGljIGFkZFRvUmVzb3VyY2VQb2xpY3koXG4gICAgc3RhdGVtZW50OiBpYW0uUG9saWN5U3RhdGVtZW50LFxuICApOiBpYW0uQWRkVG9SZXNvdXJjZVBvbGljeVJlc3VsdCB7XG4gICAgaWYgKCF0aGlzLnRhYmxlQnVja2V0UG9saWN5ICYmIHRoaXMuYXV0b0NyZWF0ZVBvbGljeSkge1xuICAgICAgdGhpcy50YWJsZUJ1Y2tldFBvbGljeSA9IG5ldyBUYWJsZUJ1Y2tldFBvbGljeSh0aGlzLCAnRGVmYXVsdFBvbGljeScsIHtcbiAgICAgICAgdGFibGVCdWNrZXQ6IHRoaXMsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50YWJsZUJ1Y2tldFBvbGljeSkge1xuICAgICAgdGhpcy50YWJsZUJ1Y2tldFBvbGljeS5kb2N1bWVudC5hZGRTdGF0ZW1lbnRzKHN0YXRlbWVudCk7XG4gICAgICByZXR1cm4geyBzdGF0ZW1lbnRBZGRlZDogdHJ1ZSwgcG9saWN5RGVwZW5kYWJsZTogdGhpcy50YWJsZUJ1Y2tldFBvbGljeSB9O1xuICAgIH1cblxuICAgIHJldHVybiB7IHN0YXRlbWVudEFkZGVkOiBmYWxzZSB9O1xuICB9XG5cbiAgcHVibGljIGdyYW50UmVhZChpZGVudGl0eTogaWFtLklHcmFudGFibGUsIHRhYmxlSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmdyYW50KFxuICAgICAgaWRlbnRpdHksXG4gICAgICBwZXJtcy5UQUJMRV9CVUNLRVRfUkVBRF9BQ0NFU1MsXG4gICAgICBwZXJtcy5LRVlfUkVBRF9BQ0NFU1MsXG4gICAgICB0aGlzLnRhYmxlQnVja2V0QXJuLFxuICAgICAgdGhpcy5nZXRUYWJsZUFybih0YWJsZUlkKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdyYW50V3JpdGUoaWRlbnRpdHk6IGlhbS5JR3JhbnRhYmxlLCB0YWJsZUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChcbiAgICAgIGlkZW50aXR5LFxuICAgICAgcGVybXMuVEFCTEVfQlVDS0VUX1dSSVRFX0FDQ0VTUyxcbiAgICAgIHBlcm1zLktFWV9SRUFEX1dSSVRFX0FDQ0VTUyxcbiAgICAgIHRoaXMudGFibGVCdWNrZXRBcm4sXG4gICAgICB0aGlzLmdldFRhYmxlQXJuKHRhYmxlSWQpLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ3JhbnRSZWFkV3JpdGUoaWRlbnRpdHk6IGlhbS5JR3JhbnRhYmxlLCB0YWJsZUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChcbiAgICAgIGlkZW50aXR5LFxuICAgICAgcGVybXMuVEFCTEVfQlVDS0VUX1JFQURfV1JJVEVfQUNDRVNTLFxuICAgICAgcGVybXMuS0VZX1dSSVRFX0FDQ0VTUyxcbiAgICAgIHRoaXMudGFibGVCdWNrZXRBcm4sXG4gICAgICB0aGlzLmdldFRhYmxlQXJuKHRhYmxlSWQpLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHRoZSBnaXZlbiBzM3RhYmxlcyBwZXJtaXNzaW9ucyB0byB0aGUgcHJvdmlkZWQgcHJpbmNpcGFsXG4gICAqIEByZXR1cm5zIEdyYW50IG9iamVjdFxuICAgKi9cbiAgcHJpdmF0ZSBncmFudChcbiAgICBncmFudGVlOiBpYW0uSUdyYW50YWJsZSxcbiAgICB0YWJsZUJ1Y2tldEFjdGlvbnM6IHN0cmluZ1tdLFxuICAgIGtleUFjdGlvbnM6IHN0cmluZ1tdLFxuICAgIHJlc291cmNlQXJuOiBzdHJpbmcsXG4gICAgLi4ub3RoZXJSZXNvdXJjZUFybnM6IChzdHJpbmcgfCB1bmRlZmluZWQpW10pIHtcbiAgICBjb25zdCByZXNvdXJjZXMgPSBbcmVzb3VyY2VBcm4sIC4uLm90aGVyUmVzb3VyY2VBcm5zXS5maWx0ZXIoYXJuID0+IGFybiAhPSB1bmRlZmluZWQpO1xuXG4gICAgY29uc3QgZ3JhbnQgPSBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWxPclJlc291cmNlKHtcbiAgICAgIGdyYW50ZWUsXG4gICAgICBhY3Rpb25zOiB0YWJsZUJ1Y2tldEFjdGlvbnMsXG4gICAgICByZXNvdXJjZUFybnM6IHJlc291cmNlcyxcbiAgICAgIHJlc291cmNlOiB0aGlzLFxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuZW5jcnlwdGlvbktleSAmJiBrZXlBY3Rpb25zICYmIGtleUFjdGlvbnMubGVuZ3RoICE9PSAwKSB7XG4gICAgICB0aGlzLmVuY3J5cHRpb25LZXkuZ3JhbnQoZ3JhbnRlZSwgLi4ua2V5QWN0aW9ucyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdyYW50O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUYWJsZUFybih0YWJsZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdGFibGVJZCA/IGAke3RoaXMudGFibGVCdWNrZXRBcm59L3RhYmxlLyR7dGFibGVJZH1gIDogdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgY29uc3RydWN0aW5nIGEgVGFibGVCdWNrZXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWJsZUJ1Y2tldFByb3BzIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIFMzIFRhYmxlQnVja2V0LlxuICAgKiBAbGluayBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9zMy10YWJsZXMtYnVja2V0cy1uYW1pbmcuaHRtbCN0YWJsZS1idWNrZXRzLW5hbWluZy1ydWxlc1xuICAgKi9cbiAgcmVhZG9ubHkgdGFibGVCdWNrZXROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFVucmVmZXJlbmNlZCBmaWxlIHJlbW92YWwgc2V0dGluZ3MgZm9yIHRoZSBTMyBUYWJsZUJ1Y2tldC5cbiAgICogQGxpbmsgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtczN0YWJsZXMtdGFibGVidWNrZXQtdW5yZWZlcmVuY2VkZmlsZXJlbW92YWwuaHRtbFxuICAgKiBAZGVmYXVsdCBFbmFibGVkIHdpdGggZGVmYXVsdCB2YWx1ZXNcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9zMy10YWJsZS1idWNrZXRzLW1haW50ZW5hbmNlLmh0bWxcbiAgICovXG4gIHJlYWRvbmx5IHVucmVmZXJlbmNlZEZpbGVSZW1vdmFsPzogVW5yZWZlcmVuY2VkRmlsZVJlbW92YWw7XG5cbiAgLyoqXG4gICAqIEFXUyByZWdpb24gdGhhdCB0aGUgdGFibGUgYnVja2V0IGV4aXN0cyBpbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBpdCdzIGFzc3VtZWQgdGhlIGJ1Y2tldCBpcyBpbiB0aGUgc2FtZSByZWdpb24gYXMgdGhlIHNjb3BlIGl0J3MgYmVpbmcgaW1wb3J0ZWQgaW50b1xuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBV1MgQWNjb3VudCBJRCBvZiB0aGUgdGFibGUgYnVja2V0IG93bmVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGl0J3MgYXNzdW1lZCB0aGUgYnVja2V0IGJlbG9uZ3MgdG8gdGhlIHNhbWUgYWNjb3VudCBhcyB0aGUgc2NvcGUgaXQncyBiZWluZyBpbXBvcnRlZCBpbnRvXG4gICAqL1xuICByZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUga2luZCBvZiBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIHRvIGFwcGx5IHRvIHRoaXMgYnVja2V0LlxuICAgKlxuICAgKiBJZiB5b3UgY2hvb3NlIEtNUywgeW91IGNhbiBzcGVjaWZ5IGEgS01TIGtleSB2aWEgYGVuY3J5cHRpb25LZXlgLiBJZlxuICAgKiBlbmNyeXB0aW9uIGtleSBpcyBub3Qgc3BlY2lmaWVkLCBhIGtleSB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBgS01TYCBpZiBgZW5jcnlwdGlvbktleWAgaXMgc3BlY2lmaWVkLCBvciBgUzNfTUFOQUdFRGAgb3RoZXJ3aXNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZW5jcnlwdGlvbj86IFRhYmxlQnVja2V0RW5jcnlwdGlvbjtcblxuICAvKipcbiAgICogRXh0ZXJuYWwgS01TIGtleSB0byB1c2UgZm9yIGJ1Y2tldCBlbmNyeXB0aW9uLlxuICAgKlxuICAgKiBUaGUgYGVuY3J5cHRpb25gIHByb3BlcnR5IG11c3QgYmUgZWl0aGVyIG5vdCBzcGVjaWZpZWQgb3Igc2V0IHRvIGBLTVNgLlxuICAgKiBBbiBlcnJvciB3aWxsIGJlIGVtaXR0ZWQgaWYgYGVuY3J5cHRpb25gIGlzIHNldCB0byBgUzNfTUFOQUdFRGAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gSWYgYGVuY3J5cHRpb25gIGlzIHNldCB0byBgS01TYCBhbmQgdGhpcyBwcm9wZXJ0eSBpcyB1bmRlZmluZWQsXG4gICAqIGEgbmV3IEtNUyBrZXkgd2lsbCBiZSBjcmVhdGVkIGFuZCBhc3NvY2lhdGVkIHdpdGggdGhpcyBidWNrZXQuXG4gICAqL1xuICByZWFkb25seSBlbmNyeXB0aW9uS2V5Pzoga21zLklLZXk7XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIHdoYXQgaGFwcGVucyB0byB0aGlzIHRhYmxlIGJ1Y2tldCBpdCBpdCBzdG9wZWQgYmVpbmcgbWFuYWdlZCBieSBjbG91ZGZvcm1hdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgUkVUQUlOXG4gICAqL1xuICByZWFkb25seSByZW1vdmFsUG9saWN5PzogUmVtb3ZhbFBvbGljeTtcbn1cblxuLyoqXG4gKiBBIHJlZmVyZW5jZSB0byBhIHRhYmxlIGJ1Y2tldCBvdXRzaWRlIHRoaXMgc3RhY2tcbiAqXG4gKiBUaGUgdGFibGVCdWNrZXROYW1lLCByZWdpb24sIGFuZCBhY2NvdW50IGNhbiBiZSBwcm92aWRlZCBleHBsaWNpdGx5XG4gKiBvciB3aWxsIGJlIGluZmVycmVkIGZyb20gdGhlIHRhYmxlQnVja2V0QXJuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVCdWNrZXRBdHRyaWJ1dGVzIHtcbiAgLyoqXG4gICAqIEFXUyByZWdpb24gdGhpcyB0YWJsZSBidWNrZXQgZXhpc3RzIGluXG4gICAqIEBkZWZhdWx0IHJlZ2lvbiBpbmZlcnJlZCBmcm9tIHNjb3BlXG4gICAqL1xuICByZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBhY2NvdW50SWQgY29udGFpbmluZyB0aGlzIHRhYmxlIGJ1Y2tldFxuICAgKiBAZGVmYXVsdCBhY2NvdW50IGluZmVycmVkIGZyb20gc2NvcGVcbiAgICovXG4gIHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWJsZSBidWNrZXQgbmFtZSwgdW5pcXVlIHBlciByZWdpb25cbiAgICogQGRlZmF1bHQgdGFibGVCdWNrZXROYW1lIGluZmVycmVkIGZyb20gYXJuXG4gICAqL1xuICByZWFkb25seSB0YWJsZUJ1Y2tldE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWJsZSBidWNrZXQncyBBUk4uXG4gICAqIEBkZWZhdWx0IHRhYmxlQnVja2V0QXJuIGNvbnN0cnVjdGVkIGZyb20gcmVnaW9uLCBhY2NvdW50IGFuZCB0YWJsZUJ1Y2tldE5hbWUgYXJlIHByb3ZpZGVkXG4gICAqL1xuICByZWFkb25seSB0YWJsZUJ1Y2tldEFybj86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgS01TIGVuY3J5cHRpb24ga2V5IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGJ1Y2tldC5cbiAgICogQGRlZmF1bHQgLSB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IGVuY3J5cHRpb25LZXk/OiBrbXMuSUtleTtcbn1cblxuLyoqXG4gKiBBbiBTMyB0YWJsZSBidWNrZXQgd2l0aCBoZWxwZXJzIGZvciBhc3NvY2lhdGVkIHJlc291cmNlIHBvbGljaWVzXG4gKlxuICogVGhpcyBidWNrZXQgbWF5IG5vdCB5ZXQgaGF2ZSBhbGwgZmVhdHVyZXMgdGhhdCBleHBvc2VkIGJ5IHRoZSB1bmRlcmx5aW5nIENmblRhYmxlQnVja2V0LlxuICpcbiAqIEBzdGF0ZWZ1bFxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHNhbXBsZVRhYmxlQnVja2V0ID0gbmV3IFRhYmxlQnVja2V0KHNjb3BlLCAnRXhhbXBsZVRhYmxlQnVja2V0Jywge1xuICogICB0YWJsZUJ1Y2tldE5hbWU6ICdleGFtcGxlLWJ1Y2tldCcsXG4gKiAgIC8vIE9wdGlvbmFsIGZpZWxkczpcbiAqICAgdW5yZWZlcmVuY2VkRmlsZVJlbW92YWw6IHtcbiAqICAgICBub25jdXJyZW50RGF5czogMTIzLFxuICogICAgIHN0YXR1czogVW5yZWZlcmVuY2VkRmlsZVJlbW92YWxTdGF0dXMuRU5BQkxFRCxcbiAqICAgICB1bnJlZmVyZW5jZWREYXlzOiAxMjMsXG4gKiAgIH0sXG4gKiB9KTtcbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIFRhYmxlQnVja2V0IGV4dGVuZHMgVGFibGVCdWNrZXRCYXNlIHtcbiAgLyoqIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhpcyBjbGFzcy4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9QRVJUWV9JTkpFQ1RJT05fSUQ6IHN0cmluZyA9ICdAYXdzLWNkay5hd3MtczN0YWJsZXMtYWxwaGEuVGFibGVCdWNrZXQnO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGEgVGFibGVCdWNrZXQgY29uc3RydWN0IGZyb20gYW4gZXh0ZXJuYWwgdGFibGUgYnVja2V0IEFSTi5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBwYXJlbnQgY3JlYXRpbmcgY29uc3RydWN0ICh1c3VhbGx5IGB0aGlzYCkuXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0J3MgbmFtZS5cbiAgICogQHBhcmFtIHRhYmxlQnVja2V0QXJuIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChhcm4pIG9mIHRoZSB0YWJsZSBidWNrZXRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVRhYmxlQnVja2V0QXJuKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHRhYmxlQnVja2V0QXJuOiBzdHJpbmcpOiBJVGFibGVCdWNrZXQge1xuICAgIHJldHVybiBUYWJsZUJ1Y2tldC5mcm9tVGFibGVCdWNrZXRBdHRyaWJ1dGVzKHNjb3BlLCBpZCwgeyB0YWJsZUJ1Y2tldEFybiB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGEgVGFibGVCdWNrZXQgY29uc3RydWN0IHRoYXQgcmVwcmVzZW50cyBhbiBleHRlcm5hbCB0YWJsZSBidWNrZXQuXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgcGFyZW50IGNyZWF0aW5nIGNvbnN0cnVjdCAodXN1YWxseSBgdGhpc2ApLlxuICAgKiBAcGFyYW0gaWQgVGhlIGNvbnN0cnVjdCdzIG5hbWUuXG4gICAqIEBwYXJhbSBhdHRycyBBIGBUYWJsZUJ1Y2tldEF0dHJpYnV0ZXNgIG9iamVjdC4gQ2FuIGJlIG1hbnVhbGx5IGNyZWF0ZWQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21UYWJsZUJ1Y2tldEF0dHJpYnV0ZXMoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIGF0dHJzOiBUYWJsZUJ1Y2tldEF0dHJpYnV0ZXMsXG4gICk6IElUYWJsZUJ1Y2tldCB7XG4gICAgY29uc3QgeyB0YWJsZUJ1Y2tldE5hbWUsIHJlZ2lvbiwgYWNjb3VudCwgdGFibGVCdWNrZXRBcm4gfSA9IHZhbGlkYXRlVGFibGVCdWNrZXRBdHRyaWJ1dGVzKHNjb3BlLCBhdHRycyk7XG4gICAgVGFibGVCdWNrZXQudmFsaWRhdGVUYWJsZUJ1Y2tldE5hbWUodGFibGVCdWNrZXROYW1lKTtcbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBUYWJsZUJ1Y2tldEJhc2Uge1xuICAgICAgcHVibGljIHJlYWRvbmx5IHRhYmxlQnVja2V0TmFtZSA9IHRhYmxlQnVja2V0TmFtZSE7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdGFibGVCdWNrZXRBcm4gPSB0YWJsZUJ1Y2tldEFybjtcbiAgICAgIHB1YmxpYyByZWFkb25seSB0YWJsZUJ1Y2tldFBvbGljeT86IFRhYmxlQnVja2V0UG9saWN5O1xuICAgICAgcHVibGljIHJlYWRvbmx5IHJlZ2lvbiA9IHJlZ2lvbjtcbiAgICAgIHB1YmxpYyByZWFkb25seSBhY2NvdW50ID0gYWNjb3VudDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBlbmNyeXB0aW9uS2V5Pzoga21zLklLZXkgPSBhdHRycy5lbmNyeXB0aW9uS2V5O1xuICAgICAgcHJvdGVjdGVkIGF1dG9DcmVhdGVQb2xpY3k6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgICAgLyoqXG4gICAgICAgKiBFeHBvcnRzIHRoaXMgYnVja2V0IGZyb20gdGhlIHN0YWNrLlxuICAgICAgICovXG4gICAgICBwdWJsaWMgZXhwb3J0KCkge1xuICAgICAgICByZXR1cm4gYXR0cnM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkLCB7XG4gICAgICBhY2NvdW50LFxuICAgICAgcmVnaW9uLFxuICAgICAgcGh5c2ljYWxOYW1lOiB0YWJsZUJ1Y2tldE5hbWUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhyb3dzIGFuIGV4Y2VwdGlvbiBpZiB0aGUgZ2l2ZW4gdGFibGUgYnVja2V0IG5hbWUgaXMgbm90IHZhbGlkLlxuICAgKlxuICAgKiBAcGFyYW0gYnVja2V0TmFtZSBuYW1lIG9mIHRoZSBidWNrZXQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHZhbGlkYXRlVGFibGVCdWNrZXROYW1lKFxuICAgIGJ1Y2tldE5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgKSB7XG4gICAgaWYgKGJ1Y2tldE5hbWUgPT0gdW5kZWZpbmVkIHx8IFRva2VuLmlzVW5yZXNvbHZlZChidWNrZXROYW1lKSkge1xuICAgICAgLy8gdGhlIG5hbWUgaXMgYSBsYXRlLWJvdW5kIHZhbHVlLCBub3QgYSBkZWZpbmVkIHN0cmluZywgc28gc2tpcCB2YWxpZGF0aW9uXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgLy8gTGVuZ3RoIHZhbGlkYXRpb25cbiAgICBpZiAoYnVja2V0TmFtZS5sZW5ndGggPCAzIHx8IGJ1Y2tldE5hbWUubGVuZ3RoID4gNjMpIHtcbiAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICAnQnVja2V0IG5hbWUgbXVzdCBiZSBhdCBsZWFzdCAzIGFuZCBubyBtb3JlIHRoYW4gNjMgY2hhcmFjdGVycycsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIENoYXJhY3RlciBzZXQgdmFsaWRhdGlvblxuICAgIGNvbnN0IGlsbGVnYWxDaGFyc2V0UmVnRXggPSAvW15hLXowLTktXS87XG4gICAgY29uc3QgYWxsb3dlZEVkZ2VDaGFyc2V0UmVnRXggPSAvW2EtejAtOV0vO1xuXG4gICAgY29uc3QgaWxsZWdhbENoYXJNYXRjaCA9IGJ1Y2tldE5hbWUubWF0Y2goaWxsZWdhbENoYXJzZXRSZWdFeCk7XG4gICAgaWYgKGlsbGVnYWxDaGFyTWF0Y2gpIHtcbiAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICAnQnVja2V0IG5hbWUgbXVzdCBvbmx5IGNvbnRhaW4gbG93ZXJjYXNlIGNoYXJhY3RlcnMsIG51bWJlcnMsIGFuZCBoeXBoZW5zICgtKScgK1xuICAgICAgICAgIGAgKG9mZnNldDogJHtpbGxlZ2FsQ2hhck1hdGNoLmluZGV4fSlgLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBFZGdlIGNoYXJhY3RlciB2YWxpZGF0aW9uXG4gICAgaWYgKCFhbGxvd2VkRWRnZUNoYXJzZXRSZWdFeC50ZXN0KGJ1Y2tldE5hbWUuY2hhckF0KDApKSkge1xuICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgICdCdWNrZXQgbmFtZSBtdXN0IHN0YXJ0IHdpdGggYSBsb3dlcmNhc2UgbGV0dGVyIG9yIG51bWJlciAob2Zmc2V0OiAwKScsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICAhYWxsb3dlZEVkZ2VDaGFyc2V0UmVnRXgudGVzdChidWNrZXROYW1lLmNoYXJBdChidWNrZXROYW1lLmxlbmd0aCAtIDEpKVxuICAgICkge1xuICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgIGBCdWNrZXQgbmFtZSBtdXN0IGVuZCB3aXRoIGEgbG93ZXJjYXNlIGxldHRlciBvciBudW1iZXIgKG9mZnNldDogJHtcbiAgICAgICAgICBidWNrZXROYW1lLmxlbmd0aCAtIDFcbiAgICAgICAgfSlgLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgYEludmFsaWQgUzMgdGFibGUgYnVja2V0IG5hbWUgKHZhbHVlOiAke2J1Y2tldE5hbWV9KSR7RU9MfSR7ZXJyb3JzLmpvaW4oRU9MKX1gLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhyb3dzIGFuIGV4Y2VwdGlvbiBpZiB0aGUgZ2l2ZW4gdW5yZWZlcmVuY2VkRmlsZVJlbW92YWxQcm9wZXJ0eSBpcyBub3QgdmFsaWQuXG4gICAqIEBwYXJhbSB1bnJlZmVyZW5jZWRGaWxlUmVtb3ZhbCBjb25maWd1cmF0aW9uIGZvciB0aGUgdGFibGUgYnVja2V0XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHZhbGlkYXRlVW5yZWZlcmVuY2VkRmlsZVJlbW92YWwoXG4gICAgdW5yZWZlcmVuY2VkRmlsZVJlbW92YWw/OiBVbnJlZmVyZW5jZWRGaWxlUmVtb3ZhbCxcbiAgKTogdm9pZCB7XG4gICAgLy8gU2tpcCB2YWxpZGF0aW9uIGlmIHByb3BlcnR5IGlzIG5vdCBkZWZpbmVkXG4gICAgaWYgKCF1bnJlZmVyZW5jZWRGaWxlUmVtb3ZhbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHsgbm9uY3VycmVudERheXMsIHN0YXR1cywgdW5yZWZlcmVuY2VkRGF5cyB9ID0gdW5yZWZlcmVuY2VkRmlsZVJlbW92YWw7XG5cbiAgICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG5cbiAgICBpZiAobm9uY3VycmVudERheXMgIT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAobm9uY3VycmVudERheXMgPCAxKSB7XG4gICAgICAgIGVycm9ycy5wdXNoKCdub25jdXJyZW50RGF5cyBtdXN0IGJlIGF0IGxlYXN0IDEgZGF5Jyk7XG4gICAgICB9XG4gICAgICBpZiAoIU51bWJlci5pc0ludGVnZXIobm9uY3VycmVudERheXMpKSB7XG4gICAgICAgIGVycm9ycy5wdXNoKCdub25jdXJyZW50RGF5cyBtdXN0IGJlIGEgd2hvbGUgbnVtYmVyJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHVucmVmZXJlbmNlZERheXMgIT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodW5yZWZlcmVuY2VkRGF5cyA8IDEpIHtcbiAgICAgICAgZXJyb3JzLnB1c2goJ3VucmVmZXJlbmNlZERheXMgbXVzdCBiZSBhdCBsZWFzdCAxIGRheScpO1xuICAgICAgfVxuICAgICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKG5vbmN1cnJlbnREYXlzKSkge1xuICAgICAgICBlcnJvcnMucHVzaCgndW5yZWZlcmVuY2VkRGF5cyBtdXN0IGJlIGEgd2hvbGUgbnVtYmVyJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgYWxsb3dlZFN0YXR1cyA9IFsnRW5hYmxlZCcsICdEaXNhYmxlZCddO1xuICAgIGlmIChzdGF0dXMgIT0gdW5kZWZpbmVkICYmICFhbGxvd2VkU3RhdHVzLmluY2x1ZGVzKHN0YXR1cykpIHtcbiAgICAgIGVycm9ycy5wdXNoKCdzdGF0dXMgbXVzdCBiZSBvbmUgb2YgXFwnRW5hYmxlZFxcJyBvciBcXCdEaXNhYmxlZFxcJycpO1xuICAgIH1cblxuICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICBgSW52YWxpZCBVbnJlZmVyZW5jZWRGaWxlUmVtb3ZhbFByb3BlcnR5fSkke0VPTH0ke2Vycm9ycy5qb2luKEVPTCl9YCxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB1bmRlcmx5aW5nIENmblRhYmxlQnVja2V0IEwxIHJlc291cmNlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfcmVzb3VyY2U6IHMzdGFibGVzLkNmblRhYmxlQnVja2V0O1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UgcG9saWN5IGZvciB0aGlzIHRhYmxlQnVja2V0LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRhYmxlQnVja2V0UG9saWN5PzogVGFibGVCdWNrZXRQb2xpY3k7XG5cbiAgLyoqXG4gICAqIFRoZSB1bmlxdWUgQW1hem9uIFJlc291cmNlIE5hbWUgKGFybikgb2YgdGhpcyB0YWJsZSBidWNrZXRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0YWJsZUJ1Y2tldEFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGlzIHRhYmxlIGJ1Y2tldFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRhYmxlQnVja2V0TmFtZTogc3RyaW5nO1xuXG4gIHB1YmxpYyByZWFkb25seSBlbmNyeXB0aW9uS2V5Pzoga21zLklLZXkgfCB1bmRlZmluZWQ7XG5cbiAgcHJvdGVjdGVkIGF1dG9DcmVhdGVQb2xpY3k6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBUYWJsZUJ1Y2tldFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBwaHlzaWNhbE5hbWU6IHByb3BzLnRhYmxlQnVja2V0TmFtZSxcbiAgICB9KTtcblxuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgVGFibGVCdWNrZXQudmFsaWRhdGVUYWJsZUJ1Y2tldE5hbWUocHJvcHMudGFibGVCdWNrZXROYW1lKTtcbiAgICBUYWJsZUJ1Y2tldC52YWxpZGF0ZVVucmVmZXJlbmNlZEZpbGVSZW1vdmFsKHByb3BzLnVucmVmZXJlbmNlZEZpbGVSZW1vdmFsKTtcbiAgICBjb25zdCB7IGJ1Y2tldEVuY3J5cHRpb24sIGVuY3J5cHRpb25LZXkgfSA9IHRoaXMucGFyc2VFbmNyeXB0aW9uKHByb3BzKTtcbiAgICB0aGlzLmVuY3J5cHRpb25LZXkgPSBlbmNyeXB0aW9uS2V5O1xuXG4gICAgdGhpcy5fcmVzb3VyY2UgPSBuZXcgczN0YWJsZXMuQ2ZuVGFibGVCdWNrZXQodGhpcywgaWQsIHtcbiAgICAgIHRhYmxlQnVja2V0TmFtZTogcHJvcHMudGFibGVCdWNrZXROYW1lLFxuICAgICAgdW5yZWZlcmVuY2VkRmlsZVJlbW92YWw6IHtcbiAgICAgICAgLi4ucHJvcHMudW5yZWZlcmVuY2VkRmlsZVJlbW92YWwsXG4gICAgICAgIG5vbmN1cnJlbnREYXlzOiBwcm9wcy51bnJlZmVyZW5jZWRGaWxlUmVtb3ZhbD8ubm9uY3VycmVudERheXMsXG4gICAgICAgIHVucmVmZXJlbmNlZERheXM6IHByb3BzLnVucmVmZXJlbmNlZEZpbGVSZW1vdmFsPy51bnJlZmVyZW5jZWREYXlzLFxuICAgICAgfSxcbiAgICAgIGVuY3J5cHRpb25Db25maWd1cmF0aW9uOiBidWNrZXRFbmNyeXB0aW9uLFxuICAgIH0pO1xuXG4gICAgdGhpcy50YWJsZUJ1Y2tldE5hbWUgPSB0aGlzLmdldFJlc291cmNlTmFtZUF0dHJpYnV0ZSh0aGlzLl9yZXNvdXJjZS5yZWYpO1xuICAgIHRoaXMudGFibGVCdWNrZXRBcm4gPSB0aGlzLl9yZXNvdXJjZS5hdHRyVGFibGVCdWNrZXRBcm47XG4gICAgdGhpcy5fcmVzb3VyY2UuYXBwbHlSZW1vdmFsUG9saWN5KHByb3BzLnJlbW92YWxQb2xpY3kpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB1cCBrZXkgcHJvcGVydGllcyBhbmQgcmV0dXJuIHRoZSBCdWNrZXQgZW5jcnlwdGlvbiBwcm9wZXJ0eSBmcm9tIHRoZVxuICAgKiB1c2VyJ3MgY29uZmlndXJhdGlvbiwgYWNjb3JkaW5nIHRvIHRoZSBmb2xsb3dpbmcgdGFibGU6XG4gICAqXG4gICAqIHwgcHJvcHMuZW5jcnlwdGlvbiB8IHByb3BzLmVuY3J5cHRpb25LZXkgfCBidWNrZXRFbmNyeXB0aW9uIChyZXR1cm4gdmFsdWUpIHwgZW5jcnlwdGlvbktleSAocmV0dXJuIHZhbHVlKSAgfFxuICAgKiB8LS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcbiAgICogfCB1bmRlZmluZWQgICAgICAgIHwgdW5kZWZpbmVkICAgICAgICAgICB8IHVuZGVmaW5lZCAgICAgICAgICAgICAgICAgICAgICAgfCB1bmRlZmluZWQgICAgICAgICAgICAgICAgICAgICB8XG4gICAqIHwgdW5kZWZpbmVkICAgICAgICB8IGsgICAgICAgICAgICAgICAgICAgfCBhd3M6a21zICAgICAgICAgICAgICAgICAgICAgICAgIHwgayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKiB8IEtNUyAgICAgICAgICAgICAgfCB1bmRlZmluZWQgICAgICAgICAgIHwgYXdzOmttcyAgICAgICAgICAgICAgICAgICAgICAgICB8IG5ldyBrZXkgKGFsbG93IG1haW50ZW5hbmNlIFNQKXxcbiAgICogfCBLTVMgICAgICAgICAgICAgIHwgayAgICAgICAgICAgICAgICAgICB8IGF3czprbXMgICAgICAgICAgICAgICAgICAgICAgICAgfCBrICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICAqIHwgUzNfTUFOQUdFRCAgICAgICB8IHVuZGVmaW5lZCAgICAgICAgICAgfCBBRVMyNTYgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdW5kZWZpbmVkICAgICAgICAgICAgICAgICAgICAgfFxuICAgKiB8IFMzX01BTkFHRUQgICAgICAgfCBrICAgICAgICAgICAgICAgICAgIHwgRVJST1IhICAgICAgICAgICAgICAgICAgICAgICAgICB8IEVSUk9SISAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICovXG4gIHByaXZhdGUgcGFyc2VFbmNyeXB0aW9uKHByb3BzOiBUYWJsZUJ1Y2tldFByb3BzKToge1xuICAgIGJ1Y2tldEVuY3J5cHRpb24/OiBzM3RhYmxlcy5DZm5UYWJsZUJ1Y2tldC5FbmNyeXB0aW9uQ29uZmlndXJhdGlvblByb3BlcnR5O1xuICAgIGVuY3J5cHRpb25LZXk/OiBrbXMuSUtleTtcbiAgfSB7XG4gICAgY29uc3QgZW5jcnlwdGlvblR5cGUgPSBwcm9wcy5lbmNyeXB0aW9uO1xuICAgIGxldCBrZXkgPSBwcm9wcy5lbmNyeXB0aW9uS2V5O1xuXG4gICAgaWYgKGVuY3J5cHRpb25UeXBlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICgga2V5ID09PSB1bmRlZmluZWQgKSB7XG4gICAgICAgIHJldHVybiB7IGJ1Y2tldEVuY3J5cHRpb246IHVuZGVmaW5lZCwgZW5jcnlwdGlvbktleTogdW5kZWZpbmVkIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGJ1Y2tldEVuY3J5cHRpb246IHtcbiAgICAgICAgICAgIGttc0tleUFybjoga2V5LmtleUFybixcbiAgICAgICAgICAgIHNzZUFsZ29yaXRobTogVGFibGVCdWNrZXRFbmNyeXB0aW9uLktNUyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVuY3J5cHRpb25LZXk6IGtleSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZW5jcnlwdGlvblR5cGUgPT09IFRhYmxlQnVja2V0RW5jcnlwdGlvbi5LTVMpIHtcbiAgICAgIGlmICgga2V5ID09PSB1bmRlZmluZWQgKSB7XG4gICAgICAgIGtleSA9IG5ldyBrbXMuS2V5KHRoaXMsICdLZXknLCB7XG4gICAgICAgICAgZGVzY3JpcHRpb246IGBDcmVhdGVkIGJ5ICR7dGhpcy5ub2RlLnBhdGh9YCxcbiAgICAgICAgICBlbmFibGVLZXlSb3RhdGlvbjogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYWxsb3dUYWJsZXNNYWludGVuYW5jZUFjY2Vzc1RvS2V5KGtleSwgcHJvcHMudGFibGVCdWNrZXROYW1lKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJ1Y2tldEVuY3J5cHRpb246IHtcbiAgICAgICAgICBrbXNLZXlBcm46IGtleS5rZXlBcm4sXG4gICAgICAgICAgc3NlQWxnb3JpdGhtOiBUYWJsZUJ1Y2tldEVuY3J5cHRpb24uS01TLFxuICAgICAgICB9LFxuICAgICAgICBlbmNyeXB0aW9uS2V5OiBrZXksXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChlbmNyeXB0aW9uVHlwZSA9PT0gVGFibGVCdWNrZXRFbmNyeXB0aW9uLlMzX01BTkFHRUQpIHtcbiAgICAgIGlmICgga2V5ID09PSB1bmRlZmluZWQgKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYnVja2V0RW5jcnlwdGlvbjoge1xuICAgICAgICAgICAgc3NlQWxnb3JpdGhtOiBUYWJsZUJ1Y2tldEVuY3J5cHRpb24uUzNfTUFOQUdFRCxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKCdFeHBlY3RlZCBlbmNyeXB0aW9uID0gYEtNU2Agd2l0aCB1c2VyIHByb3ZpZGVkIGVuY3J5cHRpb24ga2V5Jyk7XG4gICAgICB9XG4gICAgfVxuICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihgVW5rbm93biBlbmNyeXB0aW9uIGNvbmZpZ3VyYXRpb24gZGV0ZWN0ZWQ6ICR7cHJvcHMuZW5jcnlwdGlvbn0gd2l0aCBrZXkgJHtwcm9wcy5lbmNyeXB0aW9uS2V5fWApO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsbG93bGlzdCBTMyBUYWJsZXMgTWFpbnRlbmFuY2UgdG8gYWNjZXNzIHRoaXMgdGFibGUgYnVja2V0J3MgZW5jcnlwdGlvbiBrZXlcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9zMy10YWJsZXMta21zLXBlcm1pc3Npb25zLmh0bWxcbiAgICogQHBhcmFtIGVuY3J5cHRpb25LZXkgVGhlIGtleSB0byBwcm92aWRlIGFjY2VzcyB0b1xuICAgKi9cbiAgcHJpdmF0ZSBhbGxvd1RhYmxlc01haW50ZW5hbmNlQWNjZXNzVG9LZXkoZW5jcnlwdGlvbktleToga21zLklLZXksIHRhYmxlQnVja2V0TmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgcmVnaW9uID0gdGhpcy5zdGFjay5yZWdpb247XG4gICAgY29uc3QgYWNjb3VudCA9IHRoaXMuc3RhY2suYWNjb3VudDtcbiAgICBjb25zdCBwYXJ0aXRpb24gPSB0aGlzLnN0YWNrLnBhcnRpdGlvbjtcblxuICAgIGVuY3J5cHRpb25LZXkuYWRkVG9SZXNvdXJjZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBzaWQ6ICdBbGxvd1MzVGFibGVzTWFpbnRlbmFuY2VBY2Nlc3MnLFxuICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgcHJpbmNpcGFsczogW1xuICAgICAgICBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ21haW50ZW5hbmNlLnMzdGFibGVzLmFtYXpvbmF3cy5jb20nKSxcbiAgICAgIF0sXG4gICAgICBhY3Rpb25zOiBbXG4gICAgICAgICdrbXM6R2VuZXJhdGVEYXRhS2V5JyxcbiAgICAgICAgJ2ttczpEZWNyeXB0JyxcbiAgICAgIF0sXG4gICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgY29uZGl0aW9uczoge1xuICAgICAgICBTdHJpbmdMaWtlOiB7XG4gICAgICAgICAgJ2ttczpFbmNyeXB0aW9uQ29udGV4dDphd3M6czM6YXJuJzogYGFybjoke3BhcnRpdGlvbn06czN0YWJsZXM6JHtyZWdpb259OiR7YWNjb3VudH06YnVja2V0LyR7dGFibGVCdWNrZXROYW1lfS8qYCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSkpO1xuICB9XG59XG5cbiJdfQ==
|
|
459
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYnVja2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidGFibGUtYnVja2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJCQUF5QjtBQUN6QiwyQ0FBMkM7QUFDM0MsMkNBQTJDO0FBQzNDLHFEQUFxRDtBQUNyRCwyQ0FBc0c7QUFDdEcsOEVBQThFO0FBQzlFLDBFQUEwRTtBQUUxRSx1Q0FBdUM7QUFDdkMsK0RBQTBEO0FBQzFELGlDQUF1RDtBQTBIdkQ7O0dBRUc7QUFDSCxJQUFZLDZCQVVYO0FBVkQsV0FBWSw2QkFBNkI7SUFDdkM7O09BRUc7SUFDSCxvREFBbUIsQ0FBQTtJQUVuQjs7T0FFRztJQUNILHNEQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFWVyw2QkFBNkIsNkNBQTdCLDZCQUE2QixRQVV4QztBQUVEOztHQUVHO0FBQ0gsSUFBWSxxQkFXWDtBQVhELFdBQVkscUJBQXFCO0lBQy9COzs7T0FHRztJQUNILHdDQUFlLENBQUE7SUFFZjs7T0FFRztJQUNILDhDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFYVyxxQkFBcUIscUNBQXJCLHFCQUFxQixRQVdoQztBQUVELE1BQWUsZUFBZ0IsU0FBUSxlQUFRO0lBb0I3Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQW1CRztJQUNJLG1CQUFtQixDQUN4QixTQUE4QjtRQUU5QixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3JELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLHVDQUFpQixDQUFDLElBQUksRUFBRSxlQUFlLEVBQUU7Z0JBQ3BFLFdBQVcsRUFBRSxJQUFJO2FBQ2xCLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMs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QkFDckIsYUFBYTtpQkFDZDtnQkFDRCxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUM7Z0JBQ2hCLFVBQVUsRUFBRTtvQkFDVixVQUFVLEVBQUU7d0JBQ1Ysa0NBQWtDLEVBQUUsT0FBTyxTQUFTLGFBQWEsTUFBTSxJQUFJLE9BQU8sV0FBVyxlQUFlLElBQUk7cUJBQ2pIO2lCQUNGO2FBQ0YsQ0FBQyxDQUFDLENBQUM7U0FDTDs7WUE5U1UsdURBQVc7Ozs7O0FBQVgsa0NBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFT0wgfSBmcm9tICdvcyc7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyBrbXMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWttcyc7XG5pbXBvcnQgKiBhcyBzM3RhYmxlcyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczN0YWJsZXMnO1xuaW1wb3J0IHsgUmVzb3VyY2UsIElSZXNvdXJjZSwgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IsIFJlbW92YWxQb2xpY3ksIFRva2VuIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5pbXBvcnQgeyBhZGRDb25zdHJ1Y3RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcbmltcG9ydCB7IHByb3BlcnR5SW5qZWN0YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL3Byb3AtaW5qZWN0YWJsZSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIHBlcm1zIGZyb20gJy4vcGVybWlzc2lvbnMnO1xuaW1wb3J0IHsgVGFibGVCdWNrZXRQb2xpY3kgfSBmcm9tICcuL3RhYmxlLWJ1Y2tldC1wb2xpY3knO1xuaW1wb3J0IHsgdmFsaWRhdGVUYWJsZUJ1Y2tldEF0dHJpYnV0ZXMgfSBmcm9tICcuL3V0aWwnO1xuXG4vKipcbiAqIEludGVyZmFjZSBkZWZpbml0aW9uIGZvciBTMyBUYWJsZSBCdWNrZXRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVRhYmxlQnVja2V0IGV4dGVuZHMgSVJlc291cmNlIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIHRhYmxlIGJ1Y2tldC5cbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgdGFibGVCdWNrZXRBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHRhYmxlIGJ1Y2tldC5cbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgdGFibGVCdWNrZXROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBhY2NvdW50SWQgY29udGFpbmluZyB0aGUgdGFibGUgYnVja2V0LlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVnaW9uIGNvbnRhaW5pbmcgdGhlIHRhYmxlIGJ1Y2tldC5cbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBLTVMgZW5jcnlwdGlvbiBrZXkgYXNzb2NpYXRlZCB3aXRoIHRoaXMgdGFibGUgYnVja2V0LlxuICAgKi9cbiAgcmVhZG9ubHkgZW5jcnlwdGlvbktleT86IGttcy5JS2V5O1xuXG4gIC8qKlxuICAgKiBBZGRzIGEgc3RhdGVtZW50IHRvIHRoZSByZXNvdXJjZSBwb2xpY3kgZm9yIGEgcHJpbmNpcGFsIChpLmUuXG4gICAqIGFjY291bnQvcm9sZS9zZXJ2aWNlKSB0byBwZXJmb3JtIGFjdGlvbnMgb24gdGhpcyB0YWJsZSBidWNrZXQgYW5kL29yIGl0c1xuICAgKiB0YWJsZXMuXG4gICAqXG4gICAqIE5vdGUgdGhhdCB0aGUgcG9saWN5IHN0YXRlbWVudCBtYXkgb3IgbWF5IG5vdCBiZSBhZGRlZCB0byB0aGUgcG9saWN5LlxuICAgKiBGb3IgZXhhbXBsZSwgd2hlbiBhbiBgSVRhYmxlQnVja2V0YCBpcyBjcmVhdGVkIGZyb20gYW4gZXhpc3RpbmcgdGFibGUgYnVja2V0LFxuICAgKiBpdCdzIG5vdCBwb3NzaWJsZSB0byB0ZWxsIHdoZXRoZXIgdGhlIGJ1Y2tldCBhbHJlYWR5IGhhcyBhIHBvbGljeVxuICAgKiBhdHRhY2hlZCwgbGV0IGFsb25lIHRvIHJlLXVzZSB0aGF0IHBvbGljeSB0byBhZGQgbW9yZSBzdGF0ZW1lbnRzIHRvIGl0LlxuICAgKiBTbyBpdCdzIHNhZmVzdCB0byBkbyBub3RoaW5nIGluIHRoZXNlIGNhc2VzLlxuICAgKlxuICAgKiBAcGFyYW0gc3RhdGVtZW50IHRoZSBwb2xpY3kgc3RhdGVtZW50IHRvIGJlIGFkZGVkIHRvIHRoZSBidWNrZXQnc1xuICAgKiBwb2xpY3kuXG4gICAqIEByZXR1cm5zIG1ldGFkYXRhIGFib3V0IHRoZSBleGVjdXRpb24gb2YgdGhpcyBtZXRob2QuIElmIHRoZSBwb2xpY3lcbiAgICogd2FzIG5vdCBhZGRlZCwgdGhlIHZhbHVlIG9mIGBzdGF0ZW1lbnRBZGRlZGAgd2lsbCBiZSBgZmFsc2VgLiBZb3VcbiAgICogc2hvdWxkIGFsd2F5cyBjaGVjayB0aGlzIHZhbHVlIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBvcGVyYXRpb24gd2FzXG4gICAqIGFjdHVhbGx5IGNhcnJpZWQgb3V0LiBPdGhlcndpc2UsIHN5bnRoZXNpcyBhbmQgZGVwbG95IHdpbGwgdGVybWluYXRlXG4gICAqIHNpbGVudGx5LCB3aGljaCBtYXkgYmUgY29uZnVzaW5nLlxuICAgKi9cbiAgYWRkVG9SZXNvdXJjZVBvbGljeShzdGF0ZW1lbnQ6IGlhbS5Qb2xpY3lTdGF0ZW1lbnQpOiBpYW0uQWRkVG9SZXNvdXJjZVBvbGljeVJlc3VsdDtcblxuICAvKipcbiAgICogR3JhbnQgcmVhZCBwZXJtaXNzaW9ucyBmb3IgdGhpcyB0YWJsZSBidWNrZXQgYW5kIGl0cyB0YWJsZXNcbiAgICogdG8gYW4gSUFNIHByaW5jaXBhbCAoUm9sZS9Hcm91cC9Vc2VyKS5cbiAgICpcbiAgICogSWYgZW5jcnlwdGlvbiBpcyB1c2VkLCBwZXJtaXNzaW9uIHRvIHVzZSB0aGUga2V5IHRvIGRlY3J5cHQgdGhlIGNvbnRlbnRzXG4gICAqIG9mIHRoZSBidWNrZXQgd2lsbCBhbHNvIGJlIGdyYW50ZWQgdG8gdGhlIHNhbWUgcHJpbmNpcGFsLlxuICAgKlxuICAgKiBAcGFyYW0gaWRlbnRpdHkgVGhlIHByaW5jaXBhbCB0byBhbGxvdyByZWFkIHBlcm1pc3Npb25zIHRvXG4gICAqIEBwYXJhbSB0YWJsZUlkIEFsbG93IHRoZSBwZXJtaXNzaW9ucyB0byBhbGwgdGFibGVzIHVzaW5nICcqJyBvciB0byBzaW5nbGUgdGFibGUgYnkgaXRzIHVuaXF1ZSBJRC5cbiAgICovXG4gIGdyYW50UmVhZChpZGVudGl0eTogaWFtLklHcmFudGFibGUsIHRhYmxlSWQ6IHN0cmluZyk6IGlhbS5HcmFudDtcblxuICAvKipcbiAgICogR3JhbnQgd3JpdGUgcGVybWlzc2lvbnMgZm9yIHRoaXMgdGFibGUgYnVja2V0IGFuZCBpdHMgdGFibGVzXG4gICAqIHRvIGFuIElBTSBwcmluY2lwYWwgKFJvbGUvR3JvdXAvVXNlcikuXG4gICAqXG4gICAqIElmIGVuY3J5cHRpb24gaXMgdXNlZCwgcGVybWlzc2lvbiB0byB1c2UgdGhlIGtleSB0byBlbmNyeXB0IHRoZSBjb250ZW50c1xuICAgKiBvZiB0aGUgYnVja2V0IHdpbGwgYWxzbyBiZSBncmFudGVkIHRvIHRoZSBzYW1lIHByaW5jaXBhbC5cbiAgICpcbiAgICogQHBhcmFtIGlkZW50aXR5IFRoZSBwcmluY2lwYWwgdG8gYWxsb3cgd3JpdGUgcGVybWlzc2lvbnMgdG9cbiAgICogQHBhcmFtIHRhYmxlSWQgQWxsb3cgdGhlIHBlcm1pc3Npb25zIHRvIGFsbCB0YWJsZXMgdXNpbmcgJyonIG9yIHRvIHNpbmdsZSB0YWJsZSBieSBpdHMgdW5pcXVlIElELlxuICAgKi9cbiAgZ3JhbnRXcml0ZShpZGVudGl0eTogaWFtLklHcmFudGFibGUsIHRhYmxlSWQ6IHN0cmluZyk6IGlhbS5HcmFudDtcblxuICAvKipcbiAgICogR3JhbnQgcmVhZCBhbmQgd3JpdGUgcGVybWlzc2lvbnMgZm9yIHRoaXMgdGFibGUgYnVja2V0IGFuZCBpdHMgdGFibGVzXG4gICAqIHRvIGFuIElBTSBwcmluY2lwYWwgKFJvbGUvR3JvdXAvVXNlcikuXG4gICAqXG4gICAqIElmIGVuY3J5cHRpb24gaXMgdXNlZCwgcGVybWlzc2lvbiB0byB1c2UgdGhlIGtleSB0byBlbmNyeXB0L2RlY3J5cHQgdGhlIGNvbnRlbnRzXG4gICAqIG9mIHRoZSBidWNrZXQgd2lsbCBhbHNvIGJlIGdyYW50ZWQgdG8gdGhlIHNhbWUgcHJpbmNpcGFsLlxuICAgKlxuICAgKiBAcGFyYW0gaWRlbnRpdHkgVGhlIHByaW5jaXBhbCB0byBhbGxvdyByZWFkIGFuZCB3cml0ZSBwZXJtaXNzaW9ucyB0b1xuICAgKiBAcGFyYW0gdGFibGVJZCBBbGxvdyB0aGUgcGVybWlzc2lvbnMgdG8gYWxsIHRhYmxlcyB1c2luZyAnKicgb3IgdG8gc2luZ2xlIHRhYmxlIGJ5IGl0cyB1bmlxdWUgSUQuXG4gICAqL1xuICBncmFudFJlYWRXcml0ZShpZGVudGl0eTogaWFtLklHcmFudGFibGUsIHRhYmxlSWQ6IHN0cmluZyk6IGlhbS5HcmFudDtcbn1cblxuLyoqXG4gKiBVbnJlZmVyZW5jZWQgZmlsZSByZW1vdmFsIHNldHRpbmdzIGZvciB0aGUgdGhpcyB0YWJsZSBidWNrZXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVW5yZWZlcmVuY2VkRmlsZVJlbW92YWwge1xuICAvKipcbiAgICogRHVyYXRpb24gYWZ0ZXIgd2hpY2ggbm9uY3VycmVudCBmaWxlcyBzaG91bGQgYmUgcmVtb3ZlZC4gU2hvdWxkIGJlIGF0IGxlYXN0IG9uZSBkYXkuXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvczMtdGFibGUtYnVja2V0cy1tYWludGVuYW5jZS5odG1sXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gU2VlIFMzIFRhYmxlcyBVc2VyIEd1aWRlXG4gICAqL1xuICByZWFkb25seSBub25jdXJyZW50RGF5cz86IG51bWJlcjtcblxuICAvKipcbiAgICogU3RhdHVzIG9mIHVucmVmZXJlbmNlZCBmaWxlIHJlbW92YWwuIENhbiBiZSBFbmFibGVkIG9yIERpc2FibGVkLlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlcmd1aWRlL3MzLXRhYmxlLWJ1Y2tldHMtbWFpbnRlbmFuY2UuaHRtbFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFNlZSBTMyBUYWJsZXMgVXNlciBHdWlkZVxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdHVzPzogVW5yZWZlcmVuY2VkRmlsZVJlbW92YWxTdGF0dXM7XG5cbiAgLyoqXG4gICAqIER1cmF0aW9uIGFmdGVyIHdoaWNoIHVucmVmZXJlbmNlZCBmaWxlcyBzaG91bGQgYmUgcmVtb3ZlZC4gU2hvdWxkIGJlIGF0IGxlYXN0IG9uZSBkYXkuXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvczMtdGFibGUtYnVja2V0cy1tYWludGVuYW5jZS5odG1sXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gU2VlIFMzIFRhYmxlcyBVc2VyIEd1aWRlXG4gICAqL1xuICByZWFkb25seSB1bnJlZmVyZW5jZWREYXlzPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIENvbnRyb2xzIHdoZXRoZXIgdW5yZWZlcmVuY2VkIGZpbGUgcmVtb3ZhbCBpcyBlbmFibGVkIG9yIGRpc2FibGVkLlxuICovXG5leHBvcnQgZW51bSBVbnJlZmVyZW5jZWRGaWxlUmVtb3ZhbFN0YXR1cyB7XG4gIC8qKlxuICAgKiBFbmFibGUgdW5yZWZlcmVuY2VkIGZpbGUgcmVtb3ZhbC5cbiAgICovXG4gIEVOQUJMRUQgPSAnRW5hYmxlZCcsXG5cbiAgLyoqXG4gICAqIERpc2FibGUgdW5yZWZlcmVuY2VkIGZpbGUgcmVtb3ZhbC5cbiAgICovXG4gIERJU0FCTEVEID0gJ0Rpc2FibGVkJyxcbn1cblxuLyoqXG4gKiBDb250cm9scyBTZXJ2ZXIgU2lkZSBFbmNyeXB0aW9uIChTU0UpIGZvciB0aGlzIFRhYmxlQnVja2V0LlxuICovXG5leHBvcnQgZW51bSBUYWJsZUJ1Y2tldEVuY3J5cHRpb24ge1xuICAvKipcbiAgICogVXNlIGEgY3VzdG9tZXIgZGVmaW5lZCBLTVMga2V5IGZvciBlbmNyeXB0aW9uXG4gICAqIElmIGBlbmNyeXB0aW9uS2V5YCBpcyBzcGVjaWZpZWQsIHRoaXMga2V5IHdpbGwgYmUgdXNlZCwgb3RoZXJ3aXNlLCBvbmUgd2lsbCBiZSBkZWZpbmVkLlxuICAgKi9cbiAgS01TID0gJ2F3czprbXMnLFxuXG4gIC8qKlxuICAgKiBVc2UgUzMgbWFuYWdlZCBlbmNyeXB0aW9uIGtleXMgd2l0aCBBRVMyNTYgZW5jcnlwdGlvblxuICAgKi9cbiAgUzNfTUFOQUdFRCA9ICdBRVMyNTYnLFxufVxuXG5hYnN0cmFjdCBjbGFzcyBUYWJsZUJ1Y2tldEJhc2UgZXh0ZW5kcyBSZXNvdXJjZSBpbXBsZW1lbnRzIElUYWJsZUJ1Y2tldCB7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB0YWJsZUJ1Y2tldEFybjogc3RyaW5nO1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgdGFibGVCdWNrZXROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvdXJjZSBwb2xpY3kgYXNzb2NpYXRlZCB3aXRoIHRoaXMgdGFibGUgYnVja2V0LlxuICAgKlxuICAgKiBJZiBgYXV0b0NyZWF0ZVBvbGljeWAgaXMgdHJ1ZSwgYSBgVGFibGVCdWNrZXRQb2xpY3lgIHdpbGwgYmUgY3JlYXRlZCB1cG9uIHRoZVxuICAgKiBmaXJzdCBjYWxsIHRvIGFkZFRvUmVzb3VyY2VQb2xpY3kocykuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgdGFibGVCdWNrZXRQb2xpY3k/OiBUYWJsZUJ1Y2tldFBvbGljeTtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIGEgdGFibGUgYnVja2V0IHJlc291cmNlIHBvbGljeSBzaG91bGQgYXV0b21hdGljYWxseSBjcmVhdGVkIHVwb25cbiAgICogdGhlIGZpcnN0IGNhbGwgdG8gYGFkZFRvUmVzb3VyY2VQb2xpY3lgLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGF1dG9DcmVhdGVQb2xpY3k6IGJvb2xlYW47XG5cbiAgcHVibGljIGFic3RyYWN0IGVuY3J5cHRpb25LZXk/OiBrbXMuSUtleSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQWRkcyBhIHN0YXRlbWVudCB0byB0aGUgcmVzb3VyY2UgcG9saWN5IGZvciBhIHByaW5jaXBhbCAoaS5lLlxuICAgKiBhY2NvdW50L3JvbGUvc2VydmljZSkgdG8gcGVyZm9ybSBhY3Rpb25zIG9uIHRoaXMgdGFibGUgYnVja2V0IGFuZC9vciBpdHNcbiAgICogY29udGVudHMuIFVzZSBgdGFibGVCdWNrZXRBcm5gIGFuZCBgYXJuRm9yT2JqZWN0cyhrZXlzKWAgdG8gb2J0YWluIEFSTnMgZm9yXG4gICAqIHRoaXMgYnVja2V0IG9yIG9iamVjdHMuXG4gICAqXG4gICAqIE5vdGUgdGhhdCB0aGUgcG9saWN5IHN0YXRlbWVudCBtYXkgb3IgbWF5IG5vdCBiZSBhZGRlZCB0byB0aGUgcG9saWN5LlxuICAgKiBGb3IgZXhhbXBsZSwgd2hlbiBhbiBgSVRhYmxlQnVja2V0YCBpcyBjcmVhdGVkIGZyb20gYW4gZXhpc3RpbmcgdGFibGUgYnVja2V0LFxuICAgKiBpdCdzIG5vdCBwb3NzaWJsZSB0byB0ZWxsIHdoZXRoZXIgdGhlIGJ1Y2tldCBhbHJlYWR5IGhhcyBhIHBvbGljeVxuICAgKiBhdHRhY2hlZCwgbGV0IGFsb25lIHRvIHJlLXVzZSB0aGF0IHBvbGljeSB0byBhZGQgbW9yZSBzdGF0ZW1lbnRzIHRvIGl0LlxuICAgKiBTbyBpdCdzIHNhZmVzdCB0byBkbyBub3RoaW5nIGluIHRoZXNlIGNhc2VzLlxuICAgKlxuICAgKiBAcGFyYW0gc3RhdGVtZW50IHRoZSBwb2xpY3kgc3RhdGVtZW50IHRvIGJlIGFkZGVkIHRvIHRoZSBidWNrZXQnc1xuICAgKiBwb2xpY3kuXG4gICAqIEByZXR1cm5zIG1ldGFkYXRhIGFib3V0IHRoZSBleGVjdXRpb24gb2YgdGhpcyBtZXRob2QuIElmIHRoZSBwb2xpY3lcbiAgICogd2FzIG5vdCBhZGRlZCwgdGhlIHZhbHVlIG9mIGBzdGF0ZW1lbnRBZGRlZGAgd2lsbCBiZSBgZmFsc2VgLiBZb3VcbiAgICogc2hvdWxkIGFsd2F5cyBjaGVjayB0aGlzIHZhbHVlIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBvcGVyYXRpb24gd2FzXG4gICAqIGFjdHVhbGx5IGNhcnJpZWQgb3V0LiBPdGhlcndpc2UsIHN5bnRoZXNpcyBhbmQgZGVwbG95IHdpbGwgdGVybWluYXRlXG4gICAqIHNpbGVudGx5LCB3aGljaCBtYXkgYmUgY29uZnVzaW5nLlxuICAgKi9cbiAgcHVibGljIGFkZFRvUmVzb3VyY2VQb2xpY3koXG4gICAgc3RhdGVtZW50OiBpYW0uUG9saWN5U3RhdGVtZW50LFxuICApOiBpYW0uQWRkVG9SZXNvdXJjZVBvbGljeVJlc3VsdCB7XG4gICAgaWYgKCF0aGlzLnRhYmxlQnVja2V0UG9saWN5ICYmIHRoaXMuYXV0b0NyZWF0ZVBvbGljeSkge1xuICAgICAgdGhpcy50YWJsZUJ1Y2tldFBvbGljeSA9IG5ldyBUYWJsZUJ1Y2tldFBvbGljeSh0aGlzLCAnRGVmYXVsdFBvbGljeScsIHtcbiAgICAgICAgdGFibGVCdWNrZXQ6IHRoaXMsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50YWJsZUJ1Y2tldFBvbGljeSkge1xuICAgICAgdGhpcy50YWJsZUJ1Y2tldFBvbGljeS5kb2N1bWVudC5hZGRTdGF0ZW1lbnRzKHN0YXRlbWVudCk7XG4gICAgICByZXR1cm4geyBzdGF0ZW1lbnRBZGRlZDogdHJ1ZSwgcG9saWN5RGVwZW5kYWJsZTogdGhpcy50YWJsZUJ1Y2tldFBvbGljeSB9O1xuICAgIH1cblxuICAgIHJldHVybiB7IHN0YXRlbWVudEFkZGVkOiBmYWxzZSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKi9cbiAgcHVibGljIGdyYW50UmVhZChpZGVudGl0eTogaWFtLklHcmFudGFibGUsIHRhYmxlSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmdyYW50KFxuICAgICAgaWRlbnRpdHksXG4gICAgICBwZXJtcy5UQUJMRV9CVUNLRVRfUkVBRF9BQ0NFU1MsXG4gICAgICBwZXJtcy5LRVlfUkVBRF9BQ0NFU1MsXG4gICAgICB0aGlzLnRhYmxlQnVja2V0QXJuLFxuICAgICAgdGhpcy5nZXRUYWJsZUFybih0YWJsZUlkKSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKi9cbiAgcHVibGljIGdyYW50V3JpdGUoaWRlbnRpdHk6IGlhbS5JR3JhbnRhYmxlLCB0YWJsZUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChcbiAgICAgIGlkZW50aXR5LFxuICAgICAgcGVybXMuVEFCTEVfQlVDS0VUX1dSSVRFX0FDQ0VTUyxcbiAgICAgIHBlcm1zLktFWV9SRUFEX1dSSVRFX0FDQ0VTUyxcbiAgICAgIHRoaXMudGFibGVCdWNrZXRBcm4sXG4gICAgICB0aGlzLmdldFRhYmxlQXJuKHRhYmxlSWQpLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRSZWFkV3JpdGUoaWRlbnRpdHk6IGlhbS5JR3JhbnRhYmxlLCB0YWJsZUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChcbiAgICAgIGlkZW50aXR5LFxuICAgICAgcGVybXMuVEFCTEVfQlVDS0VUX1JFQURfV1JJVEVfQUNDRVNTLFxuICAgICAgcGVybXMuS0VZX1dSSVRFX0FDQ0VTUyxcbiAgICAgIHRoaXMudGFibGVCdWNrZXRBcm4sXG4gICAgICB0aGlzLmdldFRhYmxlQXJuKHRhYmxlSWQpLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHRoZSBnaXZlbiBzM3RhYmxlcyBwZXJtaXNzaW9ucyB0byB0aGUgcHJvdmlkZWQgcHJpbmNpcGFsXG4gICAqIEByZXR1cm5zIEdyYW50IG9iamVjdFxuICAgKi9cbiAgcHJpdmF0ZSBncmFudChcbiAgICBncmFudGVlOiBpYW0uSUdyYW50YWJsZSxcbiAgICB0YWJsZUJ1Y2tldEFjdGlvbnM6IHN0cmluZ1tdLFxuICAgIGtleUFjdGlvbnM6IHN0cmluZ1tdLFxuICAgIHJlc291cmNlQXJuOiBzdHJpbmcsXG4gICAgLi4ub3RoZXJSZXNvdXJjZUFybnM6IChzdHJpbmcgfCB1bmRlZmluZWQpW10pIHtcbiAgICBjb25zdCByZXNvdXJjZXMgPSBbcmVzb3VyY2VBcm4sIC4uLm90aGVyUmVzb3VyY2VBcm5zXS5maWx0ZXIoYXJuID0+IGFybiAhPSB1bmRlZmluZWQpO1xuXG4gICAgY29uc3QgZ3JhbnQgPSBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWxPclJlc291cmNlKHtcbiAgICAgIGdyYW50ZWUsXG4gICAgICBhY3Rpb25zOiB0YWJsZUJ1Y2tldEFjdGlvbnMsXG4gICAgICByZXNvdXJjZUFybnM6IHJlc291cmNlcyxcbiAgICAgIHJlc291cmNlOiB0aGlzLFxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuZW5jcnlwdGlvbktleSAmJiBrZXlBY3Rpb25zICYmIGtleUFjdGlvbnMubGVuZ3RoICE9PSAwKSB7XG4gICAgICB0aGlzLmVuY3J5cHRpb25LZXkuZ3JhbnQoZ3JhbnRlZSwgLi4ua2V5QWN0aW9ucyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdyYW50O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUYWJsZUFybih0YWJsZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdGFibGVJZCA/IGAke3RoaXMudGFibGVCdWNrZXRBcm59L3RhYmxlLyR7dGFibGVJZH1gIDogdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgY29uc3RydWN0aW5nIGEgVGFibGVCdWNrZXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWJsZUJ1Y2tldFByb3BzIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIFMzIFRhYmxlQnVja2V0LlxuICAgKiBAbGluayBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9zMy10YWJsZXMtYnVja2V0cy1uYW1pbmcuaHRtbCN0YWJsZS1idWNrZXRzLW5hbWluZy1ydWxlc1xuICAgKi9cbiAgcmVhZG9ubHkgdGFibGVCdWNrZXROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFVucmVmZXJlbmNlZCBmaWxlIHJlbW92YWwgc2V0dGluZ3MgZm9yIHRoZSBTMyBUYWJsZUJ1Y2tldC5cbiAgICogQGxpbmsgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtczN0YWJsZXMtdGFibGVidWNrZXQtdW5yZWZlcmVuY2VkZmlsZXJlbW92YWwuaHRtbFxuICAgKiBAZGVmYXVsdCBFbmFibGVkIHdpdGggZGVmYXVsdCB2YWx1ZXNcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9zMy10YWJsZS1idWNrZXRzLW1haW50ZW5hbmNlLmh0bWxcbiAgICovXG4gIHJlYWRvbmx5IHVucmVmZXJlbmNlZEZpbGVSZW1vdmFsPzogVW5yZWZlcmVuY2VkRmlsZVJlbW92YWw7XG5cbiAgLyoqXG4gICAqIEFXUyByZWdpb24gdGhhdCB0aGUgdGFibGUgYnVja2V0IGV4aXN0cyBpbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBpdCdzIGFzc3VtZWQgdGhlIGJ1Y2tldCBpcyBpbiB0aGUgc2FtZSByZWdpb24gYXMgdGhlIHNjb3BlIGl0J3MgYmVpbmcgaW1wb3J0ZWQgaW50b1xuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBV1MgQWNjb3VudCBJRCBvZiB0aGUgdGFibGUgYnVja2V0IG93bmVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGl0J3MgYXNzdW1lZCB0aGUgYnVja2V0IGJlbG9uZ3MgdG8gdGhlIHNhbWUgYWNjb3VudCBhcyB0aGUgc2NvcGUgaXQncyBiZWluZyBpbXBvcnRlZCBpbnRvXG4gICAqL1xuICByZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUga2luZCBvZiBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIHRvIGFwcGx5IHRvIHRoaXMgYnVja2V0LlxuICAgKlxuICAgKiBJZiB5b3UgY2hvb3NlIEtNUywgeW91IGNhbiBzcGVjaWZ5IGEgS01TIGtleSB2aWEgYGVuY3J5cHRpb25LZXlgLiBJZlxuICAgKiBlbmNyeXB0aW9uIGtleSBpcyBub3Qgc3BlY2lmaWVkLCBhIGtleSB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBgS01TYCBpZiBgZW5jcnlwdGlvbktleWAgaXMgc3BlY2lmaWVkLCBvciBgUzNfTUFOQUdFRGAgb3RoZXJ3aXNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZW5jcnlwdGlvbj86IFRhYmxlQnVja2V0RW5jcnlwdGlvbjtcblxuICAvKipcbiAgICogRXh0ZXJuYWwgS01TIGtleSB0byB1c2UgZm9yIGJ1Y2tldCBlbmNyeXB0aW9uLlxuICAgKlxuICAgKiBUaGUgYGVuY3J5cHRpb25gIHByb3BlcnR5IG11c3QgYmUgZWl0aGVyIG5vdCBzcGVjaWZpZWQgb3Igc2V0IHRvIGBLTVNgLlxuICAgKiBBbiBlcnJvciB3aWxsIGJlIGVtaXR0ZWQgaWYgYGVuY3J5cHRpb25gIGlzIHNldCB0byBgUzNfTUFOQUdFRGAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gSWYgYGVuY3J5cHRpb25gIGlzIHNldCB0byBgS01TYCBhbmQgdGhpcyBwcm9wZXJ0eSBpcyB1bmRlZmluZWQsXG4gICAqIGEgbmV3IEtNUyBrZXkgd2lsbCBiZSBjcmVhdGVkIGFuZCBhc3NvY2lhdGVkIHdpdGggdGhpcyBidWNrZXQuXG4gICAqL1xuICByZWFkb25seSBlbmNyeXB0aW9uS2V5Pzoga21zLklLZXk7XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIHdoYXQgaGFwcGVucyB0byB0aGlzIHRhYmxlIGJ1Y2tldCBpdCBpdCBzdG9wZWQgYmVpbmcgbWFuYWdlZCBieSBjbG91ZGZvcm1hdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgUkVUQUlOXG4gICAqL1xuICByZWFkb25seSByZW1vdmFsUG9saWN5PzogUmVtb3ZhbFBvbGljeTtcbn1cblxuLyoqXG4gKiBBIHJlZmVyZW5jZSB0byBhIHRhYmxlIGJ1Y2tldCBvdXRzaWRlIHRoaXMgc3RhY2tcbiAqXG4gKiBUaGUgdGFibGVCdWNrZXROYW1lLCByZWdpb24sIGFuZCBhY2NvdW50IGNhbiBiZSBwcm92aWRlZCBleHBsaWNpdGx5XG4gKiBvciB3aWxsIGJlIGluZmVycmVkIGZyb20gdGhlIHRhYmxlQnVja2V0QXJuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVCdWNrZXRBdHRyaWJ1dGVzIHtcbiAgLyoqXG4gICAqIEFXUyByZWdpb24gdGhpcyB0YWJsZSBidWNrZXQgZXhpc3RzIGluXG4gICAqIEBkZWZhdWx0IHJlZ2lvbiBpbmZlcnJlZCBmcm9tIHNjb3BlXG4gICAqL1xuICByZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBhY2NvdW50SWQgY29udGFpbmluZyB0aGlzIHRhYmxlIGJ1Y2tldFxuICAgKiBAZGVmYXVsdCBhY2NvdW50IGluZmVycmVkIGZyb20gc2NvcGVcbiAgICovXG4gIHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWJsZSBidWNrZXQgbmFtZSwgdW5pcXVlIHBlciByZWdpb25cbiAgICogQGRlZmF1bHQgdGFibGVCdWNrZXROYW1lIGluZmVycmVkIGZyb20gYXJuXG4gICAqL1xuICByZWFkb25seSB0YWJsZUJ1Y2tldE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWJsZSBidWNrZXQncyBBUk4uXG4gICAqIEBkZWZhdWx0IHRhYmxlQnVja2V0QXJuIGNvbnN0cnVjdGVkIGZyb20gcmVnaW9uLCBhY2NvdW50IGFuZCB0YWJsZUJ1Y2tldE5hbWUgYXJlIHByb3ZpZGVkXG4gICAqL1xuICByZWFkb25seSB0YWJsZUJ1Y2tldEFybj86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgS01TIGVuY3J5cHRpb24ga2V5IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGJ1Y2tldC5cbiAgICogQGRlZmF1bHQgLSB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IGVuY3J5cHRpb25LZXk/OiBrbXMuSUtleTtcbn1cblxuLyoqXG4gKiBBbiBTMyB0YWJsZSBidWNrZXQgd2l0aCBoZWxwZXJzIGZvciBhc3NvY2lhdGVkIHJlc291cmNlIHBvbGljaWVzXG4gKlxuICogVGhpcyBidWNrZXQgbWF5IG5vdCB5ZXQgaGF2ZSBhbGwgZmVhdHVyZXMgdGhhdCBleHBvc2VkIGJ5IHRoZSB1bmRlcmx5aW5nIENmblRhYmxlQnVja2V0LlxuICpcbiAqIEBzdGF0ZWZ1bFxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHNhbXBsZVRhYmxlQnVja2V0ID0gbmV3IFRhYmxlQnVja2V0KHNjb3BlLCAnRXhhbXBsZVRhYmxlQnVja2V0Jywge1xuICogICB0YWJsZUJ1Y2tldE5hbWU6ICdleGFtcGxlLWJ1Y2tldCcsXG4gKiAgIC8vIE9wdGlvbmFsIGZpZWxkczpcbiAqICAgdW5yZWZlcmVuY2VkRmlsZVJlbW92YWw6IHtcbiAqICAgICBub25jdXJyZW50RGF5czogMTIzLFxuICogICAgIHN0YXR1czogVW5yZWZlcmVuY2VkRmlsZVJlbW92YWxTdGF0dXMuRU5BQkxFRCxcbiAqICAgICB1bnJlZmVyZW5jZWREYXlzOiAxMjMsXG4gKiAgIH0sXG4gKiB9KTtcbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIFRhYmxlQnVja2V0IGV4dGVuZHMgVGFibGVCdWNrZXRCYXNlIHtcbiAgLyoqIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhpcyBjbGFzcy4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9QRVJUWV9JTkpFQ1RJT05fSUQ6IHN0cmluZyA9ICdAYXdzLWNkay5hd3MtczN0YWJsZXMtYWxwaGEuVGFibGVCdWNrZXQnO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGEgVGFibGVCdWNrZXQgY29uc3RydWN0IGZyb20gYW4gZXh0ZXJuYWwgdGFibGUgYnVja2V0IEFSTi5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBwYXJlbnQgY3JlYXRpbmcgY29uc3RydWN0ICh1c3VhbGx5IGB0aGlzYCkuXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0J3MgbmFtZS5cbiAgICogQHBhcmFtIHRhYmxlQnVja2V0QXJuIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChhcm4pIG9mIHRoZSB0YWJsZSBidWNrZXRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVRhYmxlQnVja2V0QXJuKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHRhYmxlQnVja2V0QXJuOiBzdHJpbmcpOiBJVGFibGVCdWNrZXQge1xuICAgIHJldHVybiBUYWJsZUJ1Y2tldC5mcm9tVGFibGVCdWNrZXRBdHRyaWJ1dGVzKHNjb3BlLCBpZCwgeyB0YWJsZUJ1Y2tldEFybiB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGEgVGFibGVCdWNrZXQgY29uc3RydWN0IHRoYXQgcmVwcmVzZW50cyBhbiBleHRlcm5hbCB0YWJsZSBidWNrZXQuXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgcGFyZW50IGNyZWF0aW5nIGNvbnN0cnVjdCAodXN1YWxseSBgdGhpc2ApLlxuICAgKiBAcGFyYW0gaWQgVGhlIGNvbnN0cnVjdCdzIG5hbWUuXG4gICAqIEBwYXJhbSBhdHRycyBBIGBUYWJsZUJ1Y2tldEF0dHJpYnV0ZXNgIG9iamVjdC4gQ2FuIGJlIG1hbnVhbGx5IGNyZWF0ZWQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21UYWJsZUJ1Y2tldEF0dHJpYnV0ZXMoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIGF0dHJzOiBUYWJsZUJ1Y2tldEF0dHJpYnV0ZXMsXG4gICk6IElUYWJsZUJ1Y2tldCB7XG4gICAgY29uc3QgeyB0YWJsZUJ1Y2tldE5hbWUsIHJlZ2lvbiwgYWNjb3VudCwgdGFibGVCdWNrZXRBcm4gfSA9IHZhbGlkYXRlVGFibGVCdWNrZXRBdHRyaWJ1dGVzKHNjb3BlLCBhdHRycyk7XG4gICAgVGFibGVCdWNrZXQudmFsaWRhdGVUYWJsZUJ1Y2tldE5hbWUodGFibGVCdWNrZXROYW1lKTtcbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBUYWJsZUJ1Y2tldEJhc2Uge1xuICAgICAgcHVibGljIHJlYWRvbmx5IHRhYmxlQnVja2V0TmFtZSA9IHRhYmxlQnVja2V0TmFtZSE7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdGFibGVCdWNrZXRBcm4gPSB0YWJsZUJ1Y2tldEFybjtcbiAgICAgIHB1YmxpYyByZWFkb25seSB0YWJsZUJ1Y2tldFBvbGljeT86IFRhYmxlQnVja2V0UG9saWN5O1xuICAgICAgcHVibGljIHJlYWRvbmx5IHJlZ2lvbiA9IHJlZ2lvbjtcbiAgICAgIHB1YmxpYyByZWFkb25seSBhY2NvdW50ID0gYWNjb3VudDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBlbmNyeXB0aW9uS2V5Pzoga21zLklLZXkgPSBhdHRycy5lbmNyeXB0aW9uS2V5O1xuICAgICAgcHJvdGVjdGVkIGF1dG9DcmVhdGVQb2xpY3k6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgICAgLyoqXG4gICAgICAgKiBFeHBvcnRzIHRoaXMgYnVja2V0IGZyb20gdGhlIHN0YWNrLlxuICAgICAgICovXG4gICAgICBwdWJsaWMgZXhwb3J0KCkge1xuICAgICAgICByZXR1cm4gYXR0cnM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkLCB7XG4gICAgICBhY2NvdW50LFxuICAgICAgcmVnaW9uLFxuICAgICAgcGh5c2ljYWxOYW1lOiB0YWJsZUJ1Y2tldE5hbWUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhyb3dzIGFuIGV4Y2VwdGlvbiBpZiB0aGUgZ2l2ZW4gdGFibGUgYnVja2V0IG5hbWUgaXMgbm90IHZhbGlkLlxuICAgKlxuICAgKiBAcGFyYW0gYnVja2V0TmFtZSBuYW1lIG9mIHRoZSBidWNrZXQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHZhbGlkYXRlVGFibGVCdWNrZXROYW1lKFxuICAgIGJ1Y2tldE5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgKSB7XG4gICAgaWYgKGJ1Y2tldE5hbWUgPT0gdW5kZWZpbmVkIHx8IFRva2VuLmlzVW5yZXNvbHZlZChidWNrZXROYW1lKSkge1xuICAgICAgLy8gdGhlIG5hbWUgaXMgYSBsYXRlLWJvdW5kIHZhbHVlLCBub3QgYSBkZWZpbmVkIHN0cmluZywgc28gc2tpcCB2YWxpZGF0aW9uXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgLy8gTGVuZ3RoIHZhbGlkYXRpb25cbiAgICBpZiAoYnVja2V0TmFtZS5sZW5ndGggPCAzIHx8IGJ1Y2tldE5hbWUubGVuZ3RoID4gNjMpIHtcbiAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICAnQnVja2V0IG5hbWUgbXVzdCBiZSBhdCBsZWFzdCAzIGFuZCBubyBtb3JlIHRoYW4gNjMgY2hhcmFjdGVycycsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIENoYXJhY3RlciBzZXQgdmFsaWRhdGlvblxuICAgIGNvbnN0IGlsbGVnYWxDaGFyc2V0UmVnRXggPSAvW15hLXowLTktXS87XG4gICAgY29uc3QgYWxsb3dlZEVkZ2VDaGFyc2V0UmVnRXggPSAvW2EtejAtOV0vO1xuXG4gICAgY29uc3QgaWxsZWdhbENoYXJNYXRjaCA9IGJ1Y2tldE5hbWUubWF0Y2goaWxsZWdhbENoYXJzZXRSZWdFeCk7XG4gICAgaWYgKGlsbGVnYWxDaGFyTWF0Y2gpIHtcbiAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICAnQnVja2V0IG5hbWUgbXVzdCBvbmx5IGNvbnRhaW4gbG93ZXJjYXNlIGNoYXJhY3RlcnMsIG51bWJlcnMsIGFuZCBoeXBoZW5zICgtKScgK1xuICAgICAgICAgIGAgKG9mZnNldDogJHtpbGxlZ2FsQ2hhck1hdGNoLmluZGV4fSlgLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBFZGdlIGNoYXJhY3RlciB2YWxpZGF0aW9uXG4gICAgaWYgKCFhbGxvd2VkRWRnZUNoYXJzZXRSZWdFeC50ZXN0KGJ1Y2tldE5hbWUuY2hhckF0KDApKSkge1xuICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgICdCdWNrZXQgbmFtZSBtdXN0IHN0YXJ0IHdpdGggYSBsb3dlcmNhc2UgbGV0dGVyIG9yIG51bWJlciAob2Zmc2V0OiAwKScsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICAhYWxsb3dlZEVkZ2VDaGFyc2V0UmVnRXgudGVzdChidWNrZXROYW1lLmNoYXJBdChidWNrZXROYW1lLmxlbmd0aCAtIDEpKVxuICAgICkge1xuICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgIGBCdWNrZXQgbmFtZSBtdXN0IGVuZCB3aXRoIGEgbG93ZXJjYXNlIGxldHRlciBvciBudW1iZXIgKG9mZnNldDogJHtcbiAgICAgICAgICBidWNrZXROYW1lLmxlbmd0aCAtIDFcbiAgICAgICAgfSlgLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgYEludmFsaWQgUzMgdGFibGUgYnVja2V0IG5hbWUgKHZhbHVlOiAke2J1Y2tldE5hbWV9KSR7RU9MfSR7ZXJyb3JzLmpvaW4oRU9MKX1gLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhyb3dzIGFuIGV4Y2VwdGlvbiBpZiB0aGUgZ2l2ZW4gdW5yZWZlcmVuY2VkRmlsZVJlbW92YWxQcm9wZXJ0eSBpcyBub3QgdmFsaWQuXG4gICAqIEBwYXJhbSB1bnJlZmVyZW5jZWRGaWxlUmVtb3ZhbCBjb25maWd1cmF0aW9uIGZvciB0aGUgdGFibGUgYnVja2V0XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHZhbGlkYXRlVW5yZWZlcmVuY2VkRmlsZVJlbW92YWwoXG4gICAgdW5yZWZlcmVuY2VkRmlsZVJlbW92YWw/OiBVbnJlZmVyZW5jZWRGaWxlUmVtb3ZhbCxcbiAgKTogdm9pZCB7XG4gICAgLy8gU2tpcCB2YWxpZGF0aW9uIGlmIHByb3BlcnR5IGlzIG5vdCBkZWZpbmVkXG4gICAgaWYgKCF1bnJlZmVyZW5jZWRGaWxlUmVtb3ZhbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHsgbm9uY3VycmVudERheXMsIHN0YXR1cywgdW5yZWZlcmVuY2VkRGF5cyB9ID0gdW5yZWZlcmVuY2VkRmlsZVJlbW92YWw7XG5cbiAgICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG5cbiAgICBpZiAobm9uY3VycmVudERheXMgIT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAobm9uY3VycmVudERheXMgPCAxKSB7XG4gICAgICAgIGVycm9ycy5wdXNoKCdub25jdXJyZW50RGF5cyBtdXN0IGJlIGF0IGxlYXN0IDEgZGF5Jyk7XG4gICAgICB9XG4gICAgICBpZiAoIU51bWJlci5pc0ludGVnZXIobm9uY3VycmVudERheXMpKSB7XG4gICAgICAgIGVycm9ycy5wdXNoKCdub25jdXJyZW50RGF5cyBtdXN0IGJlIGEgd2hvbGUgbnVtYmVyJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHVucmVmZXJlbmNlZERheXMgIT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodW5yZWZlcmVuY2VkRGF5cyA8IDEpIHtcbiAgICAgICAgZXJyb3JzLnB1c2goJ3VucmVmZXJlbmNlZERheXMgbXVzdCBiZSBhdCBsZWFzdCAxIGRheScpO1xuICAgICAgfVxuICAgICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKG5vbmN1cnJlbnREYXlzKSkge1xuICAgICAgICBlcnJvcnMucHVzaCgndW5yZWZlcmVuY2VkRGF5cyBtdXN0IGJlIGEgd2hvbGUgbnVtYmVyJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgYWxsb3dlZFN0YXR1cyA9IFsnRW5hYmxlZCcsICdEaXNhYmxlZCddO1xuICAgIGlmIChzdGF0dXMgIT0gdW5kZWZpbmVkICYmICFhbGxvd2VkU3RhdHVzLmluY2x1ZGVzKHN0YXR1cykpIHtcbiAgICAgIGVycm9ycy5wdXNoKCdzdGF0dXMgbXVzdCBiZSBvbmUgb2YgXFwnRW5hYmxlZFxcJyBvciBcXCdEaXNhYmxlZFxcJycpO1xuICAgIH1cblxuICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICBgSW52YWxpZCBVbnJlZmVyZW5jZWRGaWxlUmVtb3ZhbFByb3BlcnR5fSkke0VPTH0ke2Vycm9ycy5qb2luKEVPTCl9YCxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB1bmRlcmx5aW5nIENmblRhYmxlQnVja2V0IEwxIHJlc291cmNlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfcmVzb3VyY2U6IHMzdGFibGVzLkNmblRhYmxlQnVja2V0O1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UgcG9saWN5IGZvciB0aGlzIHRhYmxlQnVja2V0LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRhYmxlQnVja2V0UG9saWN5PzogVGFibGVCdWNrZXRQb2xpY3k7XG5cbiAgLyoqXG4gICAqIFRoZSB1bmlxdWUgQW1hem9uIFJlc291cmNlIE5hbWUgKGFybikgb2YgdGhpcyB0YWJsZSBidWNrZXRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0YWJsZUJ1Y2tldEFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGlzIHRhYmxlIGJ1Y2tldFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRhYmxlQnVja2V0TmFtZTogc3RyaW5nO1xuXG4gIHB1YmxpYyByZWFkb25seSBlbmNyeXB0aW9uS2V5Pzoga21zLklLZXkgfCB1bmRlZmluZWQ7XG5cbiAgcHJvdGVjdGVkIGF1dG9DcmVhdGVQb2xpY3k6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBUYWJsZUJ1Y2tldFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBwaHlzaWNhbE5hbWU6IHByb3BzLnRhYmxlQnVja2V0TmFtZSxcbiAgICB9KTtcblxuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgVGFibGVCdWNrZXQudmFsaWRhdGVUYWJsZUJ1Y2tldE5hbWUocHJvcHMudGFibGVCdWNrZXROYW1lKTtcbiAgICBUYWJsZUJ1Y2tldC52YWxpZGF0ZVVucmVmZXJlbmNlZEZpbGVSZW1vdmFsKHByb3BzLnVucmVmZXJlbmNlZEZpbGVSZW1vdmFsKTtcbiAgICBjb25zdCB7IGJ1Y2tldEVuY3J5cHRpb24sIGVuY3J5cHRpb25LZXkgfSA9IHRoaXMucGFyc2VFbmNyeXB0aW9uKHByb3BzKTtcbiAgICB0aGlzLmVuY3J5cHRpb25LZXkgPSBlbmNyeXB0aW9uS2V5O1xuXG4gICAgdGhpcy5fcmVzb3VyY2UgPSBuZXcgczN0YWJsZXMuQ2ZuVGFibGVCdWNrZXQodGhpcywgaWQsIHtcbiAgICAgIHRhYmxlQnVja2V0TmFtZTogcHJvcHMudGFibGVCdWNrZXROYW1lLFxuICAgICAgdW5yZWZlcmVuY2VkRmlsZVJlbW92YWw6IHtcbiAgICAgICAgLi4ucHJvcHMudW5yZWZlcmVuY2VkRmlsZVJlbW92YWwsXG4gICAgICAgIG5vbmN1cnJlbnREYXlzOiBwcm9wcy51bnJlZmVyZW5jZWRGaWxlUmVtb3ZhbD8ubm9uY3VycmVudERheXMsXG4gICAgICAgIHVucmVmZXJlbmNlZERheXM6IHByb3BzLnVucmVmZXJlbmNlZEZpbGVSZW1vdmFsPy51bnJlZmVyZW5jZWREYXlzLFxuICAgICAgfSxcbiAgICAgIGVuY3J5cHRpb25Db25maWd1cmF0aW9uOiBidWNrZXRFbmNyeXB0aW9uLFxuICAgIH0pO1xuXG4gICAgdGhpcy50YWJsZUJ1Y2tldE5hbWUgPSB0aGlzLmdldFJlc291cmNlTmFtZUF0dHJpYnV0ZSh0aGlzLl9yZXNvdXJjZS5yZWYpO1xuICAgIHRoaXMudGFibGVCdWNrZXRBcm4gPSB0aGlzLl9yZXNvdXJjZS5hdHRyVGFibGVCdWNrZXRBcm47XG4gICAgdGhpcy5fcmVzb3VyY2UuYXBwbHlSZW1vdmFsUG9saWN5KHByb3BzLnJlbW92YWxQb2xpY3kpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB1cCBrZXkgcHJvcGVydGllcyBhbmQgcmV0dXJuIHRoZSBCdWNrZXQgZW5jcnlwdGlvbiBwcm9wZXJ0eSBmcm9tIHRoZVxuICAgKiB1c2VyJ3MgY29uZmlndXJhdGlvbiwgYWNjb3JkaW5nIHRvIHRoZSBmb2xsb3dpbmcgdGFibGU6XG4gICAqXG4gICAqIHwgcHJvcHMuZW5jcnlwdGlvbiB8IHByb3BzLmVuY3J5cHRpb25LZXkgfCBidWNrZXRFbmNyeXB0aW9uIChyZXR1cm4gdmFsdWUpIHwgZW5jcnlwdGlvbktleSAocmV0dXJuIHZhbHVlKSAgfFxuICAgKiB8LS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcbiAgICogfCB1bmRlZmluZWQgICAgICAgIHwgdW5kZWZpbmVkICAgICAgICAgICB8IHVuZGVmaW5lZCAgICAgICAgICAgICAgICAgICAgICAgfCB1bmRlZmluZWQgICAgICAgICAgICAgICAgICAgICB8XG4gICAqIHwgdW5kZWZpbmVkICAgICAgICB8IGsgICAgICAgICAgICAgICAgICAgfCBhd3M6a21zICAgICAgICAgICAgICAgICAgICAgICAgIHwgayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKiB8IEtNUyAgICAgICAgICAgICAgfCB1bmRlZmluZWQgICAgICAgICAgIHwgYXdzOmttcyAgICAgICAgICAgICAgICAgICAgICAgICB8IG5ldyBrZXkgKGFsbG93IG1haW50ZW5hbmNlIFNQKXxcbiAgICogfCBLTVMgICAgICAgICAgICAgIHwgayAgICAgICAgICAgICAgICAgICB8IGF3czprbXMgICAgICAgICAgICAgICAgICAgICAgICAgfCBrICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICAqIHwgUzNfTUFOQUdFRCAgICAgICB8IHVuZGVmaW5lZCAgICAgICAgICAgfCBBRVMyNTYgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdW5kZWZpbmVkICAgICAgICAgICAgICAgICAgICAgfFxuICAgKiB8IFMzX01BTkFHRUQgICAgICAgfCBrICAgICAgICAgICAgICAgICAgIHwgRVJST1IhICAgICAgICAgICAgICAgICAgICAgICAgICB8IEVSUk9SISAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICovXG4gIHByaXZhdGUgcGFyc2VFbmNyeXB0aW9uKHByb3BzOiBUYWJsZUJ1Y2tldFByb3BzKToge1xuICAgIGJ1Y2tldEVuY3J5cHRpb24/OiBzM3RhYmxlcy5DZm5UYWJsZUJ1Y2tldC5FbmNyeXB0aW9uQ29uZmlndXJhdGlvblByb3BlcnR5O1xuICAgIGVuY3J5cHRpb25LZXk/OiBrbXMuSUtleTtcbiAgfSB7XG4gICAgY29uc3QgZW5jcnlwdGlvblR5cGUgPSBwcm9wcy5lbmNyeXB0aW9uO1xuICAgIGxldCBrZXkgPSBwcm9wcy5lbmNyeXB0aW9uS2V5O1xuXG4gICAgaWYgKGVuY3J5cHRpb25UeXBlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICgga2V5ID09PSB1bmRlZmluZWQgKSB7XG4gICAgICAgIHJldHVybiB7IGJ1Y2tldEVuY3J5cHRpb246IHVuZGVmaW5lZCwgZW5jcnlwdGlvbktleTogdW5kZWZpbmVkIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGJ1Y2tldEVuY3J5cHRpb246IHtcbiAgICAgICAgICAgIGttc0tleUFybjoga2V5LmtleUFybixcbiAgICAgICAgICAgIHNzZUFsZ29yaXRobTogVGFibGVCdWNrZXRFbmNyeXB0aW9uLktNUyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVuY3J5cHRpb25LZXk6IGtleSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZW5jcnlwdGlvblR5cGUgPT09IFRhYmxlQnVja2V0RW5jcnlwdGlvbi5LTVMpIHtcbiAgICAgIGlmICgga2V5ID09PSB1bmRlZmluZWQgKSB7XG4gICAgICAgIGtleSA9IG5ldyBrbXMuS2V5KHRoaXMsICdLZXknLCB7XG4gICAgICAgICAgZGVzY3JpcHRpb246IGBDcmVhdGVkIGJ5ICR7dGhpcy5ub2RlLnBhdGh9YCxcbiAgICAgICAgICBlbmFibGVLZXlSb3RhdGlvbjogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYWxsb3dUYWJsZXNNYWludGVuYW5jZUFjY2Vzc1RvS2V5KGtleSwgcHJvcHMudGFibGVCdWNrZXROYW1lKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJ1Y2tldEVuY3J5cHRpb246IHtcbiAgICAgICAgICBrbXNLZXlBcm46IGtleS5rZXlBcm4sXG4gICAgICAgICAgc3NlQWxnb3JpdGhtOiBUYWJsZUJ1Y2tldEVuY3J5cHRpb24uS01TLFxuICAgICAgICB9LFxuICAgICAgICBlbmNyeXB0aW9uS2V5OiBrZXksXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChlbmNyeXB0aW9uVHlwZSA9PT0gVGFibGVCdWNrZXRFbmNyeXB0aW9uLlMzX01BTkFHRUQpIHtcbiAgICAgIGlmICgga2V5ID09PSB1bmRlZmluZWQgKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYnVja2V0RW5jcnlwdGlvbjoge1xuICAgICAgICAgICAgc3NlQWxnb3JpdGhtOiBUYWJsZUJ1Y2tldEVuY3J5cHRpb24uUzNfTUFOQUdFRCxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKCdFeHBlY3RlZCBlbmNyeXB0aW9uID0gYEtNU2Agd2l0aCB1c2VyIHByb3ZpZGVkIGVuY3J5cHRpb24ga2V5Jyk7XG4gICAgICB9XG4gICAgfVxuICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihgVW5rbm93biBlbmNyeXB0aW9uIGNvbmZpZ3VyYXRpb24gZGV0ZWN0ZWQ6ICR7cHJvcHMuZW5jcnlwdGlvbn0gd2l0aCBrZXkgJHtwcm9wcy5lbmNyeXB0aW9uS2V5fWApO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsbG93bGlzdCBTMyBUYWJsZXMgTWFpbnRlbmFuY2UgdG8gYWNjZXNzIHRoaXMgdGFibGUgYnVja2V0J3MgZW5jcnlwdGlvbiBrZXlcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9zMy10YWJsZXMta21zLXBlcm1pc3Npb25zLmh0bWxcbiAgICogQHBhcmFtIGVuY3J5cHRpb25LZXkgVGhlIGtleSB0byBwcm92aWRlIGFjY2VzcyB0b1xuICAgKi9cbiAgcHJpdmF0ZSBhbGxvd1RhYmxlc01haW50ZW5hbmNlQWNjZXNzVG9LZXkoZW5jcnlwdGlvbktleToga21zLklLZXksIHRhYmxlQnVja2V0TmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgcmVnaW9uID0gdGhpcy5zdGFjay5yZWdpb247XG4gICAgY29uc3QgYWNjb3VudCA9IHRoaXMuc3RhY2suYWNjb3VudDtcbiAgICBjb25zdCBwYXJ0aXRpb24gPSB0aGlzLnN0YWNrLnBhcnRpdGlvbjtcblxuICAgIGVuY3J5cHRpb25LZXkuYWRkVG9SZXNvdXJjZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBzaWQ6ICdBbGxvd1MzVGFibGVzTWFpbnRlbmFuY2VBY2Nlc3MnLFxuICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgcHJpbmNpcGFsczogW1xuICAgICAgICBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ21haW50ZW5hbmNlLnMzdGFibGVzLmFtYXpvbmF3cy5jb20nKSxcbiAgICAgIF0sXG4gICAgICBhY3Rpb25zOiBbXG4gICAgICAgICdrbXM6R2VuZXJhdGVEYXRhS2V5JyxcbiAgICAgICAgJ2ttczpEZWNyeXB0JyxcbiAgICAgIF0sXG4gICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgY29uZGl0aW9uczoge1xuICAgICAgICBTdHJpbmdMaWtlOiB7XG4gICAgICAgICAgJ2ttczpFbmNyeXB0aW9uQ29udGV4dDphd3M6czM6YXJuJzogYGFybjoke3BhcnRpdGlvbn06czN0YWJsZXM6JHtyZWdpb259OiR7YWNjb3VudH06YnVja2V0LyR7dGFibGVCdWNrZXROYW1lfS8qYCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSkpO1xuICB9XG59XG5cbiJdfQ==
|
package/lib/table-policy.js
CHANGED
|
@@ -62,7 +62,7 @@ let TablePolicy = (() => {
|
|
|
62
62
|
TablePolicy = _classThis = _classDescriptor.value;
|
|
63
63
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
64
64
|
}
|
|
65
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-s3tables-alpha.TablePolicy", version: "2.
|
|
65
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-s3tables-alpha.TablePolicy", version: "2.235.1-alpha.0" };
|
|
66
66
|
/** Uniquely identifies this class. */
|
|
67
67
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-s3tables-alpha.TablePolicy';
|
|
68
68
|
/**
|
package/lib/table.d.ts
CHANGED
|
@@ -95,8 +95,17 @@ declare abstract class TableBase extends Resource implements ITable {
|
|
|
95
95
|
*/
|
|
96
96
|
protected abstract autoCreatePolicy: boolean;
|
|
97
97
|
addToResourcePolicy(statement: iam.PolicyStatement): iam.AddToResourcePolicyResult;
|
|
98
|
+
/**
|
|
99
|
+
* [disable-awslint:no-grants]
|
|
100
|
+
*/
|
|
98
101
|
grantRead(identity: iam.IGrantable): iam.Grant;
|
|
102
|
+
/**
|
|
103
|
+
* [disable-awslint:no-grants]
|
|
104
|
+
*/
|
|
99
105
|
grantWrite(identity: iam.IGrantable): iam.Grant;
|
|
106
|
+
/**
|
|
107
|
+
* [disable-awslint:no-grants]
|
|
108
|
+
*/
|
|
100
109
|
grantReadWrite(identity: iam.IGrantable): iam.Grant;
|
|
101
110
|
/**
|
|
102
111
|
* Grants the given s3tables permissions to the provided principal
|
package/lib/table.js
CHANGED
|
@@ -61,12 +61,21 @@ class TableBase extends core_1.Resource {
|
|
|
61
61
|
}
|
|
62
62
|
return { statementAdded: false };
|
|
63
63
|
}
|
|
64
|
+
/**
|
|
65
|
+
* [disable-awslint:no-grants]
|
|
66
|
+
*/
|
|
64
67
|
grantRead(identity) {
|
|
65
68
|
return this.grant(identity, perms.TABLE_READ_ACCESS, this.tableArn);
|
|
66
69
|
}
|
|
70
|
+
/**
|
|
71
|
+
* [disable-awslint:no-grants]
|
|
72
|
+
*/
|
|
67
73
|
grantWrite(identity) {
|
|
68
74
|
return this.grant(identity, perms.TABLE_WRITE_ACCESS, this.tableArn);
|
|
69
75
|
}
|
|
76
|
+
/**
|
|
77
|
+
* [disable-awslint:no-grants]
|
|
78
|
+
*/
|
|
70
79
|
grantReadWrite(identity) {
|
|
71
80
|
return this.grant(identity, perms.TABLE_READ_WRITE_ACCESS, this.tableArn);
|
|
72
81
|
}
|
|
@@ -126,7 +135,7 @@ let Table = (() => {
|
|
|
126
135
|
Table = _classThis = _classDescriptor.value;
|
|
127
136
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
128
137
|
}
|
|
129
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-s3tables-alpha.Table", version: "2.
|
|
138
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-s3tables-alpha.Table", version: "2.235.1-alpha.0" };
|
|
130
139
|
/** Uniquely identifies this class. */
|
|
131
140
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-s3tables-alpha.Table';
|
|
132
141
|
/**
|
|
@@ -258,4 +267,4 @@ let Table = (() => {
|
|
|
258
267
|
return Table = _classThis;
|
|
259
268
|
})();
|
|
260
269
|
exports.Table = Table;
|
|
261
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQkFBeUI7QUFDekIsMkNBQTJDO0FBQzNDLDJEQUFvRTtBQUNwRSwyQ0FNMEI7QUFDMUIsOEVBQThFO0FBQzlFLDBFQUEwRTtBQUcxRSx1Q0FBdUM7QUFtRnZDOztHQUVHO0FBQ0gsTUFBZSxTQUFVLFNBQVEsZUFBUTtJQWtCaEMsbUJBQW1CLENBQ3hCLFNBQThCO1FBRTlCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQy9DLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSw2QkFBYyxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUU7Z0JBQzNELFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtnQkFDdkIsY0FBYyxFQUFFLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7YUFDM0MsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdEUsQ0FBQztRQUVELE9BQU8sRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLENBQUM7S0FDbEM7SUFFTSxTQUFTLENBQUMsUUFBd0I7UUFDdkMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUNmLFFBQVEsRUFDUixLQUFLLENBQUMsaUJBQWlCLEVBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQ2QsQ0FBQztLQUNIO0lBRU0sVUFBVSxDQUFDLFFBQXdCO1FBQ3hDLE9BQU8sSUFBSSxD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QUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRU9MIH0gZnJvbSAnb3MnO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgQ2ZuVGFibGUsIENmblRhYmxlUG9saWN5IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzdGFibGVzJztcbmltcG9ydCB7XG4gIFJlc291cmNlLFxuICBJUmVzb3VyY2UsXG4gIFJlbW92YWxQb2xpY3ksXG4gIFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yLFxuICBUb2tlbixcbn0gZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5pbXBvcnQgeyBhZGRDb25zdHJ1Y3RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcbmltcG9ydCB7IHByb3BlcnR5SW5qZWN0YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL3Byb3AtaW5qZWN0YWJsZSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IElOYW1lc3BhY2UgfSBmcm9tICcuL25hbWVzcGFjZSc7XG5pbXBvcnQgKiBhcyBwZXJtcyBmcm9tICcuL3Blcm1pc3Npb25zJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIFMzIFRhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElUYWJsZSBleHRlbmRzIElSZXNvdXJjZSB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoaXMgdGFibGUuXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHRhYmxlQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoaXMgdGFibGUuXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHRhYmxlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYWNjb3VudElkIGNvbnRhaW5pbmcgdGhpcyB0YWJsZS5cbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJlZ2lvbiBjb250YWluaW5nIHRoaXMgdGFibGUuXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogQWRkcyBhIHN0YXRlbWVudCB0byB0aGUgcmVzb3VyY2UgcG9saWN5IGZvciBhIHByaW5jaXBhbCAoaS5lLlxuICAgKiBhY2NvdW50L3JvbGUvc2VydmljZSkgdG8gcGVyZm9ybSBhY3Rpb25zIG9uIHRoaXMgdGFibGUuXG4gICAqXG4gICAqIE5vdGUgdGhhdCB0aGUgcG9saWN5IHN0YXRlbWVudCBtYXkgb3IgbWF5IG5vdCBiZSBhZGRlZCB0byB0aGUgcG9saWN5LlxuICAgKiBGb3IgZXhhbXBsZSwgd2hlbiBhbiBgSVRhYmxlYCBpcyBjcmVhdGVkIGZyb20gYW4gZXhpc3RpbmcgdGFibGUsXG4gICAqIGl0J3Mgbm90IHBvc3NpYmxlIHRvIHRlbGwgd2hldGhlciB0aGUgdGFibGUgYWxyZWFkeSBoYXMgYSBwb2xpY3lcbiAgICogYXR0YWNoZWQsIGxldCBhbG9uZSB0byByZS11c2UgdGhhdCBwb2xpY3kgdG8gYWRkIG1vcmUgc3RhdGVtZW50cyB0byBpdC5cbiAgICogU28gaXQncyBzYWZlc3QgdG8gZG8gbm90aGluZyBpbiB0aGVzZSBjYXNlcy5cbiAgICpcbiAgICogQHBhcmFtIHN0YXRlbWVudCB0aGUgcG9saWN5IHN0YXRlbWVudCB0byBiZSBhZGRlZCB0byB0aGUgdGFibGUnc1xuICAgKiBwb2xpY3kuXG4gICAqIEByZXR1cm5zIG1ldGFkYXRhIGFib3V0IHRoZSBleGVjdXRpb24gb2YgdGhpcyBtZXRob2QuIElmIHRoZSBwb2xpY3lcbiAgICogd2FzIG5vdCBhZGRlZCwgdGhlIHZhbHVlIG9mIGBzdGF0ZW1lbnRBZGRlZGAgd2lsbCBiZSBgZmFsc2VgLiBZb3VcbiAgICogc2hvdWxkIGFsd2F5cyBjaGVjayB0aGlzIHZhbHVlIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBvcGVyYXRpb24gd2FzXG4gICAqIGFjdHVhbGx5IGNhcnJpZWQgb3V0LiBPdGhlcndpc2UsIHN5bnRoZXNpcyBhbmQgZGVwbG95IHdpbGwgdGVybWluYXRlXG4gICAqIHNpbGVudGx5LCB3aGljaCBtYXkgYmUgY29uZnVzaW5nLlxuICAgKi9cbiAgYWRkVG9SZXNvdXJjZVBvbGljeShzdGF0ZW1lbnQ6IGlhbS5Qb2xpY3lTdGF0ZW1lbnQpOiBpYW0uQWRkVG9SZXNvdXJjZVBvbGljeVJlc3VsdDtcblxuICAvKipcbiAgICogR3JhbnQgcmVhZCBwZXJtaXNzaW9ucyBmb3IgdGhpcyB0YWJsZSB0byBhbiBJQU0gcHJpbmNpcGFsIChSb2xlL0dyb3VwL1VzZXIpLlxuICAgKlxuICAgKiBJZiB0aGUgcGFyZW50IFRhYmxlQnVja2V0IG9mIHRoaXMgdGFibGUgaGFzIGVuY3J5cHRpb24sXG4gICAqIHlvdSBzaG91bGQgZ3JhbnQga21zOkRlY3J5cHQgcGVybWlzc2lvbiB0byB1c2UgdGhpcyBrZXkgdG8gdGhlIHNhbWUgcHJpbmNpcGFsLlxuICAgKlxuICAgKiBAcGFyYW0gaWRlbnRpdHkgVGhlIHByaW5jaXBhbCB0byBhbGxvdyByZWFkIHBlcm1pc3Npb25zIHRvXG4gICAqL1xuICBncmFudFJlYWQoaWRlbnRpdHk6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50O1xuXG4gIC8qKlxuICAgKiBHcmFudCB3cml0ZSBwZXJtaXNzaW9ucyBmb3IgdGhpcyB0YWJsZSB0byBhbiBJQU0gcHJpbmNpcGFsIChSb2xlL0dyb3VwL1VzZXIpLlxuICAgKlxuICAgKiBJZiB0aGUgcGFyZW50IFRhYmxlQnVja2V0IG9mIHRoaXMgdGFibGUgaGFzIGVuY3J5cHRpb24sXG4gICAqIHlvdSBzaG91bGQgZ3JhbnQga21zOkdlbmVyYXRlRGF0YUtleSBhbmQga21zOkRlY3J5cHQgcGVybWlzc2lvblxuICAgKiB0byB1c2UgdGhpcyBrZXkgdG8gdGhlIHNhbWUgcHJpbmNpcGFsLlxuICAgKlxuICAgKiBAcGFyYW0gaWRlbnRpdHkgVGhlIHByaW5jaXBhbCB0byBhbGxvdyB3cml0ZSBwZXJtaXNzaW9ucyB0b1xuICAgKi9cbiAgZ3JhbnRXcml0ZShpZGVudGl0eTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQ7XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgYW5kIHdyaXRlIHBlcm1pc3Npb25zIGZvciB0aGlzIHRhYmxlIHRvIGFuIElBTSBwcmluY2lwYWwgKFJvbGUvR3JvdXAvVXNlcikuXG4gICAqXG4gICAqIElmIHRoZSBwYXJlbnQgVGFibGVCdWNrZXQgb2YgdGhpcyB0YWJsZSBoYXMgZW5jcnlwdGlvbixcbiAgICogeW91IHNob3VsZCBncmFudCBrbXM6R2VuZXJhdGVEYXRhS2V5IGFuZCBrbXM6RGVjcnlwdCBwZXJtaXNzaW9uXG4gICAqIHRvIHVzZSB0aGlzIGtleSB0byB0aGUgc2FtZSBwcmluY2lwYWwuXG4gICAqXG4gICAqIEBwYXJhbSBpZGVudGl0eSBUaGUgcHJpbmNpcGFsIHRvIGFsbG93IHJlYWQgYW5kIHdyaXRlIHBlcm1pc3Npb25zIHRvXG4gICAqL1xuICBncmFudFJlYWRXcml0ZShpZGVudGl0eTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQ7XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgVGFibGUgaW1wbGVtZW50YXRpb25zLlxuICovXG5hYnN0cmFjdCBjbGFzcyBUYWJsZUJhc2UgZXh0ZW5kcyBSZXNvdXJjZSBpbXBsZW1lbnRzIElUYWJsZSB7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB0YWJsZU5hbWU6IHN0cmluZztcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHRhYmxlQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvdXJjZSBwb2xpY3kgYXNzb2NpYXRlZCB3aXRoIHRoaXMgdGFibGUuXG4gICAqXG4gICAqIElmIGBhdXRvQ3JlYXRlUG9saWN5YCBpcyB0cnVlLCBhIGBUYWJsZVBvbGljeWAgd2lsbCBiZSBjcmVhdGVkIHVwb24gdGhlXG4gICAqIGZpcnN0IGNhbGwgdG8gYWRkVG9SZXNvdXJjZVBvbGljeShzKS5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCB0YWJsZVBvbGljeT86IENmblRhYmxlUG9saWN5O1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgYSB0YWJsZSByZXNvdXJjZSBwb2xpY3kgc2hvdWxkIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB1cG9uXG4gICAqIHRoZSBmaXJzdCBjYWxsIHRvIGBhZGRUb1Jlc291cmNlUG9saWN5YC5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBhdXRvQ3JlYXRlUG9saWN5OiBib29sZWFuO1xuXG4gIHB1YmxpYyBhZGRUb1Jlc291cmNlUG9saWN5KFxuICAgIHN0YXRlbWVudDogaWFtLlBvbGljeVN0YXRlbWVudCxcbiAgKTogaWFtLkFkZFRvUmVzb3VyY2VQb2xpY3lSZXN1bHQge1xuICAgIGlmICghdGhpcy50YWJsZVBvbGljeSAmJiB0aGlzLmF1dG9DcmVhdGVQb2xpY3kpIHtcbiAgICAgIHRoaXMudGFibGVQb2xpY3kgPSBuZXcgQ2ZuVGFibGVQb2xpY3kodGhpcywgJ0RlZmF1bHRQb2xpY3knLCB7XG4gICAgICAgIHRhYmxlQXJuOiB0aGlzLnRhYmxlQXJuLFxuICAgICAgICByZXNvdXJjZVBvbGljeTogbmV3IGlhbS5Qb2xpY3lEb2N1bWVudCh7fSksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50YWJsZVBvbGljeSkge1xuICAgICAgdGhpcy50YWJsZVBvbGljeS5yZXNvdXJjZVBvbGljeS5hZGRTdGF0ZW1lbnRzKHN0YXRlbWVudCk7XG4gICAgICByZXR1cm4geyBzdGF0ZW1lbnRBZGRlZDogdHJ1ZSwgcG9saWN5RGVwZW5kYWJsZTogdGhpcy50YWJsZVBvbGljeSB9O1xuICAgIH1cblxuICAgIHJldHVybiB7IHN0YXRlbWVudEFkZGVkOiBmYWxzZSB9O1xuICB9XG5cbiAgcHVibGljIGdyYW50UmVhZChpZGVudGl0eTogaWFtLklHcmFudGFibGUpIHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChcbiAgICAgIGlkZW50aXR5LFxuICAgICAgcGVybXMuVEFCTEVfUkVBRF9BQ0NFU1MsXG4gICAgICB0aGlzLnRhYmxlQXJuLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ3JhbnRXcml0ZShpZGVudGl0eTogaWFtLklHcmFudGFibGUpIHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChcbiAgICAgIGlkZW50aXR5LFxuICAgICAgcGVybXMuVEFCTEVfV1JJVEVfQUNDRVNTLFxuICAgICAgdGhpcy50YWJsZUFybixcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdyYW50UmVhZFdyaXRlKGlkZW50aXR5OiBpYW0uSUdyYW50YWJsZSkge1xuICAgIHJldHVybiB0aGlzLmdyYW50KFxuICAgICAgaWRlbnRpdHksXG4gICAgICBwZXJtcy5UQUJMRV9SRUFEX1dSSVRFX0FDQ0VTUyxcbiAgICAgIHRoaXMudGFibGVBcm4sXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgdGhlIGdpdmVuIHMzdGFibGVzIHBlcm1pc3Npb25zIHRvIHRoZSBwcm92aWRlZCBwcmluY2lwYWxcbiAgICogQHJldHVybnMgR3JhbnQgb2JqZWN0XG4gICAqL1xuICBwcml2YXRlIGdyYW50KFxuICAgIGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlLFxuICAgIHRhYmxlQWN0aW9uczogc3RyaW5nW10sXG4gICAgcmVzb3VyY2VBcm46IHN0cmluZyxcbiAgICAuLi5vdGhlclJlc291cmNlQXJuczogKHN0cmluZyB8IHVuZGVmaW5lZClbXSkge1xuICAgIGNvbnN0IHJlc291cmNlcyA9IFtyZXNvdXJjZUFybiwgLi4ub3RoZXJSZXNvdXJjZUFybnNdLmZpbHRlcihhcm4gPT4gYXJuICE9IHVuZGVmaW5lZCk7XG5cbiAgICBjb25zdCBncmFudCA9IGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbE9yUmVzb3VyY2Uoe1xuICAgICAgZ3JhbnRlZSxcbiAgICAgIGFjdGlvbnM6IHRhYmxlQWN0aW9ucyxcbiAgICAgIHJlc291cmNlQXJuczogcmVzb3VyY2VzLFxuICAgICAgcmVzb3VyY2U6IHRoaXMsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZ3JhbnQ7XG4gIH1cbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjcmVhdGluZyBhIG5ldyBTMyBUYWJsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWJsZVByb3BzIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhpcyB0YWJsZSwgdW5pcXVlIHdpdGhpbiB0aGUgbmFtZXNwYWNlXG4gICAqL1xuICByZWFkb25seSB0YWJsZU5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBuYW1lc3BhY2UgdW5kZXIgd2hpY2ggdGhpcyB0YWJsZSBpcyBjcmVhdGVkXG4gICAqL1xuICByZWFkb25seSBuYW1lc3BhY2U6IElOYW1lc3BhY2U7XG4gIC8qKlxuICAgKiBGb3JtYXQgb2YgdGhpcyB0YWJsZS4gQ3VycmVudGx5LCB0aGUgb25seSBzdXBwb3J0ZWQgdmFsdWUgaXMgT3BlblRhYmxlRm9ybWF0LklDRUJFUkcuXG4gICAqL1xuICByZWFkb25seSBvcGVuVGFibGVGb3JtYXQ6IE9wZW5UYWJsZUZvcm1hdDtcbiAgLyoqXG4gICAqIFNldHRpbmdzIGdvdmVybmluZyB0aGUgQ29tcGFjdGlvbiBtYWludGVuYW5jZSBhY3Rpb24uXG4gICAqIEBkZWZhdWx0IEFtYXpvbiBTMyBzZWxlY3RzIHRoZSBiZXN0IGNvbXBhY3Rpb24gc3RyYXRlZ3kgYmFzZWQgb24geW91ciB0YWJsZSBzb3J0IG9yZGVyLlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlcmd1aWRlL3MzLXRhYmxlcy1tYWludGVuYW5jZS5odG1sXG4gICAqL1xuICByZWFkb25seSBjb21wYWN0aW9uPzogQ29tcGFjdGlvblByb3BlcnR5O1xuICAvKipcbiAgICogQ29udGFpbnMgZGV0YWlscyBhYm91dCB0aGUgbWV0YWRhdGEgZm9yIGFuIEljZWJlcmcgdGFibGUuXG4gICAqIEBkZWZhdWx0IHRhYmxlIGlzIGNyZWF0ZWQgd2l0aG91dCBhbnkgbWV0YWRhdGFcbiAgICovXG4gIHJlYWRvbmx5IGljZWJlcmdNZXRhZGF0YT86IEljZWJlcmdNZXRhZGF0YVByb3BlcnR5O1xuICAvKipcbiAgICogQ29udGFpbnMgZGV0YWlscyBhYm91dCB0aGUgc25hcHNob3QgbWFuYWdlbWVudCBzZXR0aW5ncyBmb3IgYW4gSWNlYmVyZyB0YWJsZS5cbiAgICogQGRlZmF1bHQgZW5hYmxlZDogTWluaW11bVNuYXBzaG90cyBpcyAxIGJ5IGRlZmF1bHQgYW5kIE1heGltdW1TbmFwc2hvdEFnZSBpcyAxMjAgaG91cnMgYnkgZGVmYXVsdC5cbiAgICovXG4gIHJlYWRvbmx5IHNuYXBzaG90TWFuYWdlbWVudD86IFNuYXBzaG90TWFuYWdlbWVudFByb3BlcnR5O1xuICAvKipcbiAgICogQ29udHJvbHMgd2hhdCBoYXBwZW5zIHRvIHRoaXMgdGFibGUgaXQgaXQgc3RvcGVkIGJlaW5nIG1hbmFnZWQgYnkgY2xvdWRmb3JtYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IFJFVEFJTlxuICAgKi9cbiAgcmVhZG9ubHkgcmVtb3ZhbFBvbGljeT86IFJlbW92YWxQb2xpY3k7XG4gIC8qKlxuICAgKiBJZiB0cnVlLCBpbmRpY2F0ZXMgdGhhdCB5b3UgZG9uJ3Qgd2FudCB0byBzcGVjaWZ5IGEgc2NoZW1hIGZvciB0aGUgdGFibGUuXG4gICAqXG4gICAqIFRoaXMgcHJvcGVydHkgaXMgbXV0dWFsbHkgZXhjbHVzaXZlIHRvICdJY2ViZXJnTWV0YWRhdGEnLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgd2l0aG91dE1ldGFkYXRhPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBTdXBwb3J0ZWQgb3BlbiB0YWJsZSBmb3JtYXRzLlxuICovXG5leHBvcnQgZW51bSBPcGVuVGFibGVGb3JtYXQge1xuICAvKipcbiAgICogQXBhY2hlIEljZWJlcmcgdGFibGUgZm9ybWF0LlxuICAgKi9cbiAgSUNFQkVSRyA9ICdJQ0VCRVJHJyxcbn1cblxuLyoqXG4gKiBTZXR0aW5ncyBnb3Zlcm5pbmcgdGhlIENvbXBhY3Rpb24gbWFpbnRlbmFuY2UgYWN0aW9uLlxuICpcbiAqIEBkZWZhdWx0IC0gTm8gY29tcGFjdGlvbiBzZXR0aW5nc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbXBhY3Rpb25Qcm9wZXJ0eSB7XG4gIC8qKlxuICAgKiBTdGF0dXMgb2YgdGhlIGNvbXBhY3Rpb24gbWFpbnRlbmFuY2UgYWN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdHVzOiBTdGF0dXM7XG4gIC8qKlxuICAgKiBUYXJnZXQgZmlsZSBzaXplIGluIG1lZ2FieXRlcyBmb3IgY29tcGFjdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldEZpbGVTaXplTWI6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBTdGF0dXMgdmFsdWVzIGZvciBtYWludGVuYW5jZSBhY3Rpb25zLlxuICovXG5leHBvcnQgZW51bSBTdGF0dXMge1xuICAvKipcbiAgICogRW5hYmxlIHRoZSBtYWludGVuYW5jZSBhY3Rpb24uXG4gICAqL1xuICBFTkFCTEVEID0gJ2VuYWJsZWQnLFxuICAvKipcbiAgICogRGlzYWJsZSB0aGUgbWFpbnRlbmFuY2UgYWN0aW9uLlxuICAgKi9cbiAgRElTQUJMRUQgPSAnZGlzYWJsZWQnLFxufVxuXG4vKipcbiAqIENvbnRhaW5zIGRldGFpbHMgYWJvdXQgdGhlIG1ldGFkYXRhIGZvciBhbiBJY2ViZXJnIHRhYmxlLlxuICogQHNlZSBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLXMzdGFibGVzLXRhYmxlLWljZWJlcmdtZXRhZGF0YS5odG1sXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSWNlYmVyZ01ldGFkYXRhUHJvcGVydHkge1xuICAvKipcbiAgICogQ29udGFpbnMgZGV0YWlscyBhYm91dCB0aGUgc2NoZW1hIGZvciBhbiBJY2ViZXJnIHRhYmxlLlxuICAgKlxuICAgKiBAc2VlIGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtczN0YWJsZXMtdGFibGUtaWNlYmVyZ21ldGFkYXRhLmh0bWwjY2ZuLXMzdGFibGVzLXRhYmxlLWljZWJlcmdtZXRhZGF0YS1pY2ViZXJnc2NoZW1hXG4gICAqL1xuICByZWFkb25seSBpY2ViZXJnU2NoZW1hOiBJY2ViZXJnU2NoZW1hUHJvcGVydHk7XG59XG5cbi8qKlxuICogQ29udGFpbnMgZGV0YWlscyBhYm91dCB0aGUgc2NoZW1hIGZvciBhbiBJY2ViZXJnIHRhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEljZWJlcmdTY2hlbWFQcm9wZXJ0eSB7XG4gIC8qKlxuICAgKiBDb250YWlucyBkZXRhaWxzIGFib3V0IHRoZSBzY2hlbWEgZm9yIGFuIEljZWJlcmcgdGFibGUuXG4gICAqL1xuICByZWFkb25seSBzY2hlbWFGaWVsZExpc3Q6IFNjaGVtYUZpZWxkUHJvcGVydHlbXTtcbn1cblxuLyoqXG4gKiBDb250YWlucyBkZXRhaWxzIGFib3V0IGEgc2NoZW1hIGZpZWxkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVtYUZpZWxkUHJvcGVydHkge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGZpZWxkLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIEJvb2xlYW4gdmFsdWUgdGhhdCBzcGVjaWZpZXMgd2hldGhlciB2YWx1ZXMgYXJlIHJlcXVpcmVkIGZvciBlYWNoIHJvdyBpbiB0aGlzIGZpZWxkLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCB0aGlzIGlzIGBmYWxzZWAgYW5kIG51bGwgdmFsdWVzIGFyZSBhbGxvd2VkIGluIHRoZSBmaWVsZC4gSWYgdGhpcyBpcyBgdHJ1ZWAsIHRoZSBmaWVsZCBkb2VzIG5vdCBhbGxvdyBudWxsIHZhbHVlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVpcmVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGZpZWxkIHR5cGUuXG4gICAqXG4gICAqIFMzIFRhYmxlcyBzdXBwb3J0cyBhbGwgQXBhY2hlIEljZWJlcmcgcHJpbWl0aXZlIHR5cGVzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSBbQXBhY2hlIEljZWJlcmcgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9pY2ViZXJnLmFwYWNoZS5vcmcvc3BlYy8jcHJpbWl0aXZlLXR5cGVzKS5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb250YWlucyBkZXRhaWxzIGFib3V0IHRoZSBzbmFwc2hvdCBtYW5hZ2VtZW50IHNldHRpbmdzIGZvciBhbiBJY2ViZXJnIHRhYmxlLlxuICpcbiAqIEEgc25hcHNob3QgaXMgZXhwaXJlZCB3aGVuIGl0IGV4Y2VlZHMgTWluU25hcHNob3RzVG9LZWVwIGFuZCBNYXhTbmFwc2hvdEFnZUhvdXJzLlxuICpcbiAqIEBkZWZhdWx0IC0gTm8gc25hcHNob3QgbWFuYWdlbWVudCBzZXR0aW5nc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNuYXBzaG90TWFuYWdlbWVudFByb3BlcnR5IHtcbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIGFnZSBvZiBhIHNuYXBzaG90IGJlZm9yZSBpdCBjYW4gYmUgZXhwaXJlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBtYXhpbXVtIGFnZVxuICAgKi9cbiAgcmVhZG9ubHkgbWF4U25hcHNob3RBZ2VIb3Vycz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG1pbmltdW0gbnVtYmVyIG9mIHNuYXBzaG90cyB0byBrZWVwLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIG1pbmltdW0gbnVtYmVyXG4gICAqL1xuICByZWFkb25seSBtaW5TbmFwc2hvdHNUb0tlZXA/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBTbmFwc2hvdE1hbmFnZW1lbnQgbWFpbnRlbmFuY2UgYWN0aW9uIGlzIGVuYWJsZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm90IHNwZWNpZmllZFxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdHVzPzogU3RhdHVzO1xufVxuXG4vKipcbiAqIEEgcmVmZXJlbmNlIHRvIGEgdGFibGUgb3V0c2lkZSB0aGlzIHN0YWNrXG4gKlxuICogVGhlIHRhYmxlTmFtZSwgcmVnaW9uLCBhbmQgYWNjb3VudCBjYW4gYmUgcHJvdmlkZWQgZXhwbGljaXRseVxuICogb3Igd2lsbCBiZSBpbmZlcnJlZCBmcm9tIHRoZSB0YWJsZUFyblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlQXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoaXMgdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IHRhYmxlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFibGUncyBBUk4uXG4gICAqL1xuICByZWFkb25seSB0YWJsZUFybjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFuIFMzIFRhYmxlIHdpdGggaGVscGVycy5cbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIFRhYmxlIGV4dGVuZHMgVGFibGVCYXNlIHtcbiAgLyoqIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhpcyBjbGFzcy4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9QRVJUWV9JTkpFQ1RJT05fSUQ6IHN0cmluZyA9ICdAYXdzLWNkay5hd3MtczN0YWJsZXMtYWxwaGEuVGFibGUnO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGEgVGFibGUgY29uc3RydWN0IHRoYXQgcmVwcmVzZW50cyBhbiBleHRlcm5hbCB0YWJsZS5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBwYXJlbnQgY3JlYXRpbmcgY29uc3RydWN0ICh1c3VhbGx5IGB0aGlzYCkuXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0J3MgbmFtZS5cbiAgICogQHBhcmFtIGF0dHJzIEEgYFRhYmxlQXR0cmlidXRlc2Agb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHRhYmxlIG5hbWUgYW5kIEFSTi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVRhYmxlQXR0cmlidXRlcyhcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgYXR0cnM6IFRhYmxlQXR0cmlidXRlcyxcbiAgKTogSVRhYmxlIHtcbiAgICBjb25zdCB0YWJsZUFybiA9IGF0dHJzLnRhYmxlQXJuO1xuICAgIFRhYmxlLnZhbGlkYXRlVGFibGVOYW1lKGF0dHJzLnRhYmxlTmFtZSk7XG5cbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBUYWJsZUJhc2Uge1xuICAgICAgcHVibGljIHJlYWRvbmx5IHRhYmxlTmFtZSA9IGF0dHJzLnRhYmxlTmFtZTtcbiAgICAgIHB1YmxpYyByZWFkb25seSB0YWJsZUFybiA9IHRhYmxlQXJuO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHRhYmxlUG9saWN5PzogQ2ZuVGFibGVQb2xpY3k7XG4gICAgICBwcm90ZWN0ZWQgYXV0b0NyZWF0ZVBvbGljeTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgICAvKipcbiAgICAgICAqIEV4cG9ydHMgdGhpcyAgZnJvbSB0aGUgc3RhY2suXG4gICAgICAgKi9cbiAgICAgIHB1YmxpYyBleHBvcnQoKSB7XG4gICAgICAgIHJldHVybiBhdHRycztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydChzY29wZSwgaWQsIHtcbiAgICAgIGVudmlyb25tZW50RnJvbUFybjogdGFibGVBcm4sXG4gICAgICBwaHlzaWNhbE5hbWU6IHRhYmxlQXJuLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9zMy10YWJsZXMtYnVja2V0cy1uYW1pbmcuaHRtbFxuICAgKiBAcGFyYW0gdGFibGVOYW1lIE5hbWUgb2YgdGhlIHRhYmxlXG4gICAqIEB0aHJvd3MgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IgaWYgYW55IG5hbWluZyBlcnJvcnMgYXJlIGRldGVjdGVkXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHZhbGlkYXRlVGFibGVOYW1lKHRhYmxlTmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKHRhYmxlTmFtZSA9PSB1bmRlZmluZWQgfHwgVG9rZW4uaXNVbnJlc29sdmVkKHRhYmxlTmFtZSkpIHtcbiAgICAgIC8vIHRoZSBuYW1lIGlzIGEgbGF0ZS1ib3VuZCB2YWx1ZSwgbm90IGEgZGVmaW5lZCBzdHJpbmcsIHNvIHNraXAgdmFsaWRhdGlvblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcblxuICAgIC8vIExlbmd0aCB2YWxpZGF0aW9uXG4gICAgaWYgKHRhYmxlTmFtZS5sZW5ndGggPCAxIHx8IHRhYmxlTmFtZS5sZW5ndGggPiAyNTUpIHtcbiAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICAnVGFibGUgbmFtZSBtdXN0IGJlIGF0IGxlYXN0IDEgYW5kIG5vIG1vcmUgdGhhbiAyNTUgY2hhcmFjdGVycycsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIENoYXJhY3RlciBzZXQgdmFsaWRhdGlvblxuICAgIGNvbnN0IGlsbGVnYWxDaGFyc2V0UmVnRXggPSAvW15hLXowLTlfXS87XG4gICAgY29uc3QgYWxsb3dlZEVkZ2VDaGFyc2V0UmVnRXggPSAvW2EtejAtOV0vO1xuXG4gICAgY29uc3QgaWxsZWdhbENoYXJNYXRjaCA9IHRhYmxlTmFtZS5tYXRjaChpbGxlZ2FsQ2hhcnNldFJlZ0V4KTtcbiAgICBpZiAoaWxsZWdhbENoYXJNYXRjaCkge1xuICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgICdUYWJsZSBuYW1lIG11c3Qgb25seSBjb250YWluIGxvd2VyY2FzZSBjaGFyYWN0ZXJzLCBudW1iZXJzLCBhbmQgdW5kZXJzY29yZXMgKF8pJyArXG4gICAgICAgICAgYCAob2Zmc2V0OiAke2lsbGVnYWxDaGFyTWF0Y2guaW5kZXh9KWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIEVkZ2UgY2hhcmFjdGVyIHZhbGlkYXRpb25cbiAgICBpZiAoIWFsbG93ZWRFZGdlQ2hhcnNldFJlZ0V4LnRlc3QodGFibGVOYW1lLmNoYXJBdCgwKSkpIHtcbiAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICAnVGFibGUgbmFtZSBtdXN0IHN0YXJ0IHdpdGggYSBsb3dlcmNhc2UgbGV0dGVyIG9yIG51bWJlciAob2Zmc2V0OiAwKScsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoIWFsbG93ZWRFZGdlQ2hhcnNldFJlZ0V4LnRlc3QodGFibGVOYW1lLmNoYXJBdCh0YWJsZU5hbWUubGVuZ3RoIC0gMSkpKSB7XG4gICAgICBlcnJvcnMucHVzaChcbiAgICAgICAgYFRhYmxlIG5hbWUgbXVzdCBlbmQgd2l0aCBhIGxvd2VyY2FzZSBsZXR0ZXIgb3IgbnVtYmVyIChvZmZzZXQ6ICR7XG4gICAgICAgICAgdGFibGVOYW1lLmxlbmd0aCAtIDFcbiAgICAgICAgfSlgLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgYEludmFsaWQgUzMgdGFibGUgbmFtZSAodmFsdWU6ICR7dGFibGVOYW1lfSkke0VPTH0ke2Vycm9ycy5qb2luKEVPTCl9YCxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB1bmlxdWUgQW1hem9uIFJlc291cmNlIE5hbWUgKGFybikgb2YgdGhpcyB0YWJsZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRhYmxlQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB1bmRlcmx5aW5nIENmblRhYmxlIEwxIHJlc291cmNlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfcmVzb3VyY2U6IENmblRhYmxlO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGlzIHRhYmxlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdGFibGVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lc3BhY2UgY29udGFpbmluZyB0aGlzIHRhYmxlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbmFtZXNwYWNlOiBJTmFtZXNwYWNlO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UgcG9saWN5IGZvciB0aGlzIHRhYmxlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRhYmxlUG9saWN5PzogQ2ZuVGFibGVQb2xpY3k7XG5cbiAgcHJvdGVjdGVkIGF1dG9DcmVhdGVQb2xpY3k6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBUYWJsZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7fSk7XG5cbiAgICAvLyBFbmhhbmNlZCBDREsgQW5hbHl0aWNzIFRlbGVtZXRyeVxuICAgIGFkZENvbnN0cnVjdE1ldGFkYXRhKHRoaXMsIHByb3BzKTtcblxuICAgIFRhYmxlLnZhbGlkYXRlVGFibGVOYW1lKHByb3BzLnRhYmxlTmFtZSk7XG5cbiAgICB0aGlzLl9yZXNvdXJjZSA9IG5ldyBDZm5UYWJsZSh0aGlzLCBpZCwge1xuICAgICAgdGFibGVOYW1lOiBwcm9wcy50YWJsZU5hbWUsXG4gICAgICBvcGVuVGFibGVGb3JtYXQ6IHByb3BzLm9wZW5UYWJsZUZvcm1hdCxcbiAgICAgIHRhYmxlQnVja2V0QXJuOiBwcm9wcy5uYW1lc3BhY2UudGFibGVCdWNrZXQudGFibGVCdWNrZXRBcm4sXG4gICAgICBuYW1lc3BhY2U6IHByb3BzLm5hbWVzcGFjZS5uYW1lc3BhY2VOYW1lLFxuICAgICAgY29tcGFjdGlvbjogcHJvcHMuY29tcGFjdGlvbixcbiAgICAgIGljZWJlcmdNZXRhZGF0YTogcHJvcHMuaWNlYmVyZ01ldGFkYXRhLFxuICAgICAgc25hcHNob3RNYW5hZ2VtZW50OiBwcm9wcy5zbmFwc2hvdE1hbmFnZW1lbnQsXG4gICAgICB3aXRob3V0TWV0YWRhdGE6IHByb3BzLndpdGhvdXRNZXRhZGF0YSA/ICdZZXMnIDogdW5kZWZpbmVkLFxuICAgIH0pO1xuXG4gICAgdGhpcy5uYW1lc3BhY2UgPSBwcm9wcy5uYW1lc3BhY2U7XG4gICAgdGhpcy50YWJsZU5hbWUgPSBwcm9wcy50YWJsZU5hbWU7XG4gICAgdGhpcy50YWJsZUFybiA9IHRoaXMuX3Jlc291cmNlLmF0dHJUYWJsZUFybjtcbiAgICB0aGlzLl9yZXNvdXJjZS5hcHBseVJlbW92YWxQb2xpY3kocHJvcHMucmVtb3ZhbFBvbGljeSk7XG4gICAgdGhpcy5ub2RlLmFkZERlcGVuZGVuY3kodGhpcy5uYW1lc3BhY2UpO1xuICB9XG59XG4iXX0=
|
|
270
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQkFBeUI7QUFDekIsMkNBQTJDO0FBQzNDLDJEQUFvRTtBQUNwRSwyQ0FNMEI7QUFDMUIsOEVBQThFO0FBQzlFLDBFQUEwRTtBQUcxRSx1Q0FBdUM7QUFtRnZDOztHQUVHO0FBQ0gsTUFBZSxTQUFVLFNBQVEsZUFBUTtJQWtCaEMsbUJBQW1CLENBQ3hCLFNBQThCO1FBRTlCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQy9DLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSw2QkFBYyxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUU7Z0JBQzNELFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtnQkFDdkIsY0FBYyxFQUFFLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7YUFDM0MsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdEUsQ0FBQztRQUVELE9BQU8sRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLENBQUM7S0FDbEM7SUFFRDs7T0FFRztJQUNJLFNBQVMsQ0FBQyxRQUF3QjtRQUN2QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQ2YsUUFBUSxFQUNSLEtBQUssQ0FBQyxpQkFBaUIsRUFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FDZCxDQUFDO0tBQ0g7SUFFRDs7T0FFRztJQUNJLFVBQVUsQ0FBQyxR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QUM7U0FDekM7O1lBaEpVLHVEQUFLOzs7OztBQUFMLHNCQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRU9MIH0gZnJvbSAnb3MnO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgQ2ZuVGFibGUsIENmblRhYmxlUG9saWN5IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzdGFibGVzJztcbmltcG9ydCB7XG4gIFJlc291cmNlLFxuICBJUmVzb3VyY2UsXG4gIFJlbW92YWxQb2xpY3ksXG4gIFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yLFxuICBUb2tlbixcbn0gZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5pbXBvcnQgeyBhZGRDb25zdHJ1Y3RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcbmltcG9ydCB7IHByb3BlcnR5SW5qZWN0YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL3Byb3AtaW5qZWN0YWJsZSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IElOYW1lc3BhY2UgfSBmcm9tICcuL25hbWVzcGFjZSc7XG5pbXBvcnQgKiBhcyBwZXJtcyBmcm9tICcuL3Blcm1pc3Npb25zJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIFMzIFRhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElUYWJsZSBleHRlbmRzIElSZXNvdXJjZSB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoaXMgdGFibGUuXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHRhYmxlQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoaXMgdGFibGUuXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHRhYmxlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYWNjb3VudElkIGNvbnRhaW5pbmcgdGhpcyB0YWJsZS5cbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJlZ2lvbiBjb250YWluaW5nIHRoaXMgdGFibGUuXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogQWRkcyBhIHN0YXRlbWVudCB0byB0aGUgcmVzb3VyY2UgcG9saWN5IGZvciBhIHByaW5jaXBhbCAoaS5lLlxuICAgKiBhY2NvdW50L3JvbGUvc2VydmljZSkgdG8gcGVyZm9ybSBhY3Rpb25zIG9uIHRoaXMgdGFibGUuXG4gICAqXG4gICAqIE5vdGUgdGhhdCB0aGUgcG9saWN5IHN0YXRlbWVudCBtYXkgb3IgbWF5IG5vdCBiZSBhZGRlZCB0byB0aGUgcG9saWN5LlxuICAgKiBGb3IgZXhhbXBsZSwgd2hlbiBhbiBgSVRhYmxlYCBpcyBjcmVhdGVkIGZyb20gYW4gZXhpc3RpbmcgdGFibGUsXG4gICAqIGl0J3Mgbm90IHBvc3NpYmxlIHRvIHRlbGwgd2hldGhlciB0aGUgdGFibGUgYWxyZWFkeSBoYXMgYSBwb2xpY3lcbiAgICogYXR0YWNoZWQsIGxldCBhbG9uZSB0byByZS11c2UgdGhhdCBwb2xpY3kgdG8gYWRkIG1vcmUgc3RhdGVtZW50cyB0byBpdC5cbiAgICogU28gaXQncyBzYWZlc3QgdG8gZG8gbm90aGluZyBpbiB0aGVzZSBjYXNlcy5cbiAgICpcbiAgICogQHBhcmFtIHN0YXRlbWVudCB0aGUgcG9saWN5IHN0YXRlbWVudCB0byBiZSBhZGRlZCB0byB0aGUgdGFibGUnc1xuICAgKiBwb2xpY3kuXG4gICAqIEByZXR1cm5zIG1ldGFkYXRhIGFib3V0IHRoZSBleGVjdXRpb24gb2YgdGhpcyBtZXRob2QuIElmIHRoZSBwb2xpY3lcbiAgICogd2FzIG5vdCBhZGRlZCwgdGhlIHZhbHVlIG9mIGBzdGF0ZW1lbnRBZGRlZGAgd2lsbCBiZSBgZmFsc2VgLiBZb3VcbiAgICogc2hvdWxkIGFsd2F5cyBjaGVjayB0aGlzIHZhbHVlIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBvcGVyYXRpb24gd2FzXG4gICAqIGFjdHVhbGx5IGNhcnJpZWQgb3V0LiBPdGhlcndpc2UsIHN5bnRoZXNpcyBhbmQgZGVwbG95IHdpbGwgdGVybWluYXRlXG4gICAqIHNpbGVudGx5LCB3aGljaCBtYXkgYmUgY29uZnVzaW5nLlxuICAgKi9cbiAgYWRkVG9SZXNvdXJjZVBvbGljeShzdGF0ZW1lbnQ6IGlhbS5Qb2xpY3lTdGF0ZW1lbnQpOiBpYW0uQWRkVG9SZXNvdXJjZVBvbGljeVJlc3VsdDtcblxuICAvKipcbiAgICogR3JhbnQgcmVhZCBwZXJtaXNzaW9ucyBmb3IgdGhpcyB0YWJsZSB0byBhbiBJQU0gcHJpbmNpcGFsIChSb2xlL0dyb3VwL1VzZXIpLlxuICAgKlxuICAgKiBJZiB0aGUgcGFyZW50IFRhYmxlQnVja2V0IG9mIHRoaXMgdGFibGUgaGFzIGVuY3J5cHRpb24sXG4gICAqIHlvdSBzaG91bGQgZ3JhbnQga21zOkRlY3J5cHQgcGVybWlzc2lvbiB0byB1c2UgdGhpcyBrZXkgdG8gdGhlIHNhbWUgcHJpbmNpcGFsLlxuICAgKlxuICAgKiBAcGFyYW0gaWRlbnRpdHkgVGhlIHByaW5jaXBhbCB0byBhbGxvdyByZWFkIHBlcm1pc3Npb25zIHRvXG4gICAqL1xuICBncmFudFJlYWQoaWRlbnRpdHk6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50O1xuXG4gIC8qKlxuICAgKiBHcmFudCB3cml0ZSBwZXJtaXNzaW9ucyBmb3IgdGhpcyB0YWJsZSB0byBhbiBJQU0gcHJpbmNpcGFsIChSb2xlL0dyb3VwL1VzZXIpLlxuICAgKlxuICAgKiBJZiB0aGUgcGFyZW50IFRhYmxlQnVja2V0IG9mIHRoaXMgdGFibGUgaGFzIGVuY3J5cHRpb24sXG4gICAqIHlvdSBzaG91bGQgZ3JhbnQga21zOkdlbmVyYXRlRGF0YUtleSBhbmQga21zOkRlY3J5cHQgcGVybWlzc2lvblxuICAgKiB0byB1c2UgdGhpcyBrZXkgdG8gdGhlIHNhbWUgcHJpbmNpcGFsLlxuICAgKlxuICAgKiBAcGFyYW0gaWRlbnRpdHkgVGhlIHByaW5jaXBhbCB0byBhbGxvdyB3cml0ZSBwZXJtaXNzaW9ucyB0b1xuICAgKi9cbiAgZ3JhbnRXcml0ZShpZGVudGl0eTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQ7XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgYW5kIHdyaXRlIHBlcm1pc3Npb25zIGZvciB0aGlzIHRhYmxlIHRvIGFuIElBTSBwcmluY2lwYWwgKFJvbGUvR3JvdXAvVXNlcikuXG4gICAqXG4gICAqIElmIHRoZSBwYXJlbnQgVGFibGVCdWNrZXQgb2YgdGhpcyB0YWJsZSBoYXMgZW5jcnlwdGlvbixcbiAgICogeW91IHNob3VsZCBncmFudCBrbXM6R2VuZXJhdGVEYXRhS2V5IGFuZCBrbXM6RGVjcnlwdCBwZXJtaXNzaW9uXG4gICAqIHRvIHVzZSB0aGlzIGtleSB0byB0aGUgc2FtZSBwcmluY2lwYWwuXG4gICAqXG4gICAqIEBwYXJhbSBpZGVudGl0eSBUaGUgcHJpbmNpcGFsIHRvIGFsbG93IHJlYWQgYW5kIHdyaXRlIHBlcm1pc3Npb25zIHRvXG4gICAqL1xuICBncmFudFJlYWRXcml0ZShpZGVudGl0eTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQ7XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgVGFibGUgaW1wbGVtZW50YXRpb25zLlxuICovXG5hYnN0cmFjdCBjbGFzcyBUYWJsZUJhc2UgZXh0ZW5kcyBSZXNvdXJjZSBpbXBsZW1lbnRzIElUYWJsZSB7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB0YWJsZU5hbWU6IHN0cmluZztcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHRhYmxlQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvdXJjZSBwb2xpY3kgYXNzb2NpYXRlZCB3aXRoIHRoaXMgdGFibGUuXG4gICAqXG4gICAqIElmIGBhdXRvQ3JlYXRlUG9saWN5YCBpcyB0cnVlLCBhIGBUYWJsZVBvbGljeWAgd2lsbCBiZSBjcmVhdGVkIHVwb24gdGhlXG4gICAqIGZpcnN0IGNhbGwgdG8gYWRkVG9SZXNvdXJjZVBvbGljeShzKS5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCB0YWJsZVBvbGljeT86IENmblRhYmxlUG9saWN5O1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgYSB0YWJsZSByZXNvdXJjZSBwb2xpY3kgc2hvdWxkIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB1cG9uXG4gICAqIHRoZSBmaXJzdCBjYWxsIHRvIGBhZGRUb1Jlc291cmNlUG9saWN5YC5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBhdXRvQ3JlYXRlUG9saWN5OiBib29sZWFuO1xuXG4gIHB1YmxpYyBhZGRUb1Jlc291cmNlUG9saWN5KFxuICAgIHN0YXRlbWVudDogaWFtLlBvbGljeVN0YXRlbWVudCxcbiAgKTogaWFtLkFkZFRvUmVzb3VyY2VQb2xpY3lSZXN1bHQge1xuICAgIGlmICghdGhpcy50YWJsZVBvbGljeSAmJiB0aGlzLmF1dG9DcmVhdGVQb2xpY3kpIHtcbiAgICAgIHRoaXMudGFibGVQb2xpY3kgPSBuZXcgQ2ZuVGFibGVQb2xpY3kodGhpcywgJ0RlZmF1bHRQb2xpY3knLCB7XG4gICAgICAgIHRhYmxlQXJuOiB0aGlzLnRhYmxlQXJuLFxuICAgICAgICByZXNvdXJjZVBvbGljeTogbmV3IGlhbS5Qb2xpY3lEb2N1bWVudCh7fSksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50YWJsZVBvbGljeSkge1xuICAgICAgdGhpcy50YWJsZVBvbGljeS5yZXNvdXJjZVBvbGljeS5hZGRTdGF0ZW1lbnRzKHN0YXRlbWVudCk7XG4gICAgICByZXR1cm4geyBzdGF0ZW1lbnRBZGRlZDogdHJ1ZSwgcG9saWN5RGVwZW5kYWJsZTogdGhpcy50YWJsZVBvbGljeSB9O1xuICAgIH1cblxuICAgIHJldHVybiB7IHN0YXRlbWVudEFkZGVkOiBmYWxzZSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKi9cbiAgcHVibGljIGdyYW50UmVhZChpZGVudGl0eTogaWFtLklHcmFudGFibGUpIHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChcbiAgICAgIGlkZW50aXR5LFxuICAgICAgcGVybXMuVEFCTEVfUkVBRF9BQ0NFU1MsXG4gICAgICB0aGlzLnRhYmxlQXJuLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRXcml0ZShpZGVudGl0eTogaWFtLklHcmFudGFibGUpIHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChcbiAgICAgIGlkZW50aXR5LFxuICAgICAgcGVybXMuVEFCTEVfV1JJVEVfQUNDRVNTLFxuICAgICAgdGhpcy50YWJsZUFybixcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKi9cbiAgcHVibGljIGdyYW50UmVhZFdyaXRlKGlkZW50aXR5OiBpYW0uSUdyYW50YWJsZSkge1xuICAgIHJldHVybiB0aGlzLmdyYW50KFxuICAgICAgaWRlbnRpdHksXG4gICAgICBwZXJtcy5UQUJMRV9SRUFEX1dSSVRFX0FDQ0VTUyxcbiAgICAgIHRoaXMudGFibGVBcm4sXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgdGhlIGdpdmVuIHMzdGFibGVzIHBlcm1pc3Npb25zIHRvIHRoZSBwcm92aWRlZCBwcmluY2lwYWxcbiAgICogQHJldHVybnMgR3JhbnQgb2JqZWN0XG4gICAqL1xuICBwcml2YXRlIGdyYW50KFxuICAgIGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlLFxuICAgIHRhYmxlQWN0aW9uczogc3RyaW5nW10sXG4gICAgcmVzb3VyY2VBcm46IHN0cmluZyxcbiAgICAuLi5vdGhlclJlc291cmNlQXJuczogKHN0cmluZyB8IHVuZGVmaW5lZClbXSkge1xuICAgIGNvbnN0IHJlc291cmNlcyA9IFtyZXNvdXJjZUFybiwgLi4ub3RoZXJSZXNvdXJjZUFybnNdLmZpbHRlcihhcm4gPT4gYXJuICE9IHVuZGVmaW5lZCk7XG5cbiAgICBjb25zdCBncmFudCA9IGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbE9yUmVzb3VyY2Uoe1xuICAgICAgZ3JhbnRlZSxcbiAgICAgIGFjdGlvbnM6IHRhYmxlQWN0aW9ucyxcbiAgICAgIHJlc291cmNlQXJuczogcmVzb3VyY2VzLFxuICAgICAgcmVzb3VyY2U6IHRoaXMsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZ3JhbnQ7XG4gIH1cbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjcmVhdGluZyBhIG5ldyBTMyBUYWJsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWJsZVByb3BzIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhpcyB0YWJsZSwgdW5pcXVlIHdpdGhpbiB0aGUgbmFtZXNwYWNlXG4gICAqL1xuICByZWFkb25seSB0YWJsZU5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBuYW1lc3BhY2UgdW5kZXIgd2hpY2ggdGhpcyB0YWJsZSBpcyBjcmVhdGVkXG4gICAqL1xuICByZWFkb25seSBuYW1lc3BhY2U6IElOYW1lc3BhY2U7XG4gIC8qKlxuICAgKiBGb3JtYXQgb2YgdGhpcyB0YWJsZS4gQ3VycmVudGx5LCB0aGUgb25seSBzdXBwb3J0ZWQgdmFsdWUgaXMgT3BlblRhYmxlRm9ybWF0LklDRUJFUkcuXG4gICAqL1xuICByZWFkb25seSBvcGVuVGFibGVGb3JtYXQ6IE9wZW5UYWJsZUZvcm1hdDtcbiAgLyoqXG4gICAqIFNldHRpbmdzIGdvdmVybmluZyB0aGUgQ29tcGFjdGlvbiBtYWludGVuYW5jZSBhY3Rpb24uXG4gICAqIEBkZWZhdWx0IEFtYXpvbiBTMyBzZWxlY3RzIHRoZSBiZXN0IGNvbXBhY3Rpb24gc3RyYXRlZ3kgYmFzZWQgb24geW91ciB0YWJsZSBzb3J0IG9yZGVyLlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlcmd1aWRlL3MzLXRhYmxlcy1tYWludGVuYW5jZS5odG1sXG4gICAqL1xuICByZWFkb25seSBjb21wYWN0aW9uPzogQ29tcGFjdGlvblByb3BlcnR5O1xuICAvKipcbiAgICogQ29udGFpbnMgZGV0YWlscyBhYm91dCB0aGUgbWV0YWRhdGEgZm9yIGFuIEljZWJlcmcgdGFibGUuXG4gICAqIEBkZWZhdWx0IHRhYmxlIGlzIGNyZWF0ZWQgd2l0aG91dCBhbnkgbWV0YWRhdGFcbiAgICovXG4gIHJlYWRvbmx5IGljZWJlcmdNZXRhZGF0YT86IEljZWJlcmdNZXRhZGF0YVByb3BlcnR5O1xuICAvKipcbiAgICogQ29udGFpbnMgZGV0YWlscyBhYm91dCB0aGUgc25hcHNob3QgbWFuYWdlbWVudCBzZXR0aW5ncyBmb3IgYW4gSWNlYmVyZyB0YWJsZS5cbiAgICogQGRlZmF1bHQgZW5hYmxlZDogTWluaW11bVNuYXBzaG90cyBpcyAxIGJ5IGRlZmF1bHQgYW5kIE1heGltdW1TbmFwc2hvdEFnZSBpcyAxMjAgaG91cnMgYnkgZGVmYXVsdC5cbiAgICovXG4gIHJlYWRvbmx5IHNuYXBzaG90TWFuYWdlbWVudD86IFNuYXBzaG90TWFuYWdlbWVudFByb3BlcnR5O1xuICAvKipcbiAgICogQ29udHJvbHMgd2hhdCBoYXBwZW5zIHRvIHRoaXMgdGFibGUgaXQgaXQgc3RvcGVkIGJlaW5nIG1hbmFnZWQgYnkgY2xvdWRmb3JtYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IFJFVEFJTlxuICAgKi9cbiAgcmVhZG9ubHkgcmVtb3ZhbFBvbGljeT86IFJlbW92YWxQb2xpY3k7XG4gIC8qKlxuICAgKiBJZiB0cnVlLCBpbmRpY2F0ZXMgdGhhdCB5b3UgZG9uJ3Qgd2FudCB0byBzcGVjaWZ5IGEgc2NoZW1hIGZvciB0aGUgdGFibGUuXG4gICAqXG4gICAqIFRoaXMgcHJvcGVydHkgaXMgbXV0dWFsbHkgZXhjbHVzaXZlIHRvICdJY2ViZXJnTWV0YWRhdGEnLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgd2l0aG91dE1ldGFkYXRhPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBTdXBwb3J0ZWQgb3BlbiB0YWJsZSBmb3JtYXRzLlxuICovXG5leHBvcnQgZW51bSBPcGVuVGFibGVGb3JtYXQge1xuICAvKipcbiAgICogQXBhY2hlIEljZWJlcmcgdGFibGUgZm9ybWF0LlxuICAgKi9cbiAgSUNFQkVSRyA9ICdJQ0VCRVJHJyxcbn1cblxuLyoqXG4gKiBTZXR0aW5ncyBnb3Zlcm5pbmcgdGhlIENvbXBhY3Rpb24gbWFpbnRlbmFuY2UgYWN0aW9uLlxuICpcbiAqIEBkZWZhdWx0IC0gTm8gY29tcGFjdGlvbiBzZXR0aW5nc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbXBhY3Rpb25Qcm9wZXJ0eSB7XG4gIC8qKlxuICAgKiBTdGF0dXMgb2YgdGhlIGNvbXBhY3Rpb24gbWFpbnRlbmFuY2UgYWN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdHVzOiBTdGF0dXM7XG4gIC8qKlxuICAgKiBUYXJnZXQgZmlsZSBzaXplIGluIG1lZ2FieXRlcyBmb3IgY29tcGFjdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldEZpbGVTaXplTWI6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBTdGF0dXMgdmFsdWVzIGZvciBtYWludGVuYW5jZSBhY3Rpb25zLlxuICovXG5leHBvcnQgZW51bSBTdGF0dXMge1xuICAvKipcbiAgICogRW5hYmxlIHRoZSBtYWludGVuYW5jZSBhY3Rpb24uXG4gICAqL1xuICBFTkFCTEVEID0gJ2VuYWJsZWQnLFxuICAvKipcbiAgICogRGlzYWJsZSB0aGUgbWFpbnRlbmFuY2UgYWN0aW9uLlxuICAgKi9cbiAgRElTQUJMRUQgPSAnZGlzYWJsZWQnLFxufVxuXG4vKipcbiAqIENvbnRhaW5zIGRldGFpbHMgYWJvdXQgdGhlIG1ldGFkYXRhIGZvciBhbiBJY2ViZXJnIHRhYmxlLlxuICogQHNlZSBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLXMzdGFibGVzLXRhYmxlLWljZWJlcmdtZXRhZGF0YS5odG1sXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSWNlYmVyZ01ldGFkYXRhUHJvcGVydHkge1xuICAvKipcbiAgICogQ29udGFpbnMgZGV0YWlscyBhYm91dCB0aGUgc2NoZW1hIGZvciBhbiBJY2ViZXJnIHRhYmxlLlxuICAgKlxuICAgKiBAc2VlIGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtczN0YWJsZXMtdGFibGUtaWNlYmVyZ21ldGFkYXRhLmh0bWwjY2ZuLXMzdGFibGVzLXRhYmxlLWljZWJlcmdtZXRhZGF0YS1pY2ViZXJnc2NoZW1hXG4gICAqL1xuICByZWFkb25seSBpY2ViZXJnU2NoZW1hOiBJY2ViZXJnU2NoZW1hUHJvcGVydHk7XG59XG5cbi8qKlxuICogQ29udGFpbnMgZGV0YWlscyBhYm91dCB0aGUgc2NoZW1hIGZvciBhbiBJY2ViZXJnIHRhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEljZWJlcmdTY2hlbWFQcm9wZXJ0eSB7XG4gIC8qKlxuICAgKiBDb250YWlucyBkZXRhaWxzIGFib3V0IHRoZSBzY2hlbWEgZm9yIGFuIEljZWJlcmcgdGFibGUuXG4gICAqL1xuICByZWFkb25seSBzY2hlbWFGaWVsZExpc3Q6IFNjaGVtYUZpZWxkUHJvcGVydHlbXTtcbn1cblxuLyoqXG4gKiBDb250YWlucyBkZXRhaWxzIGFib3V0IGEgc2NoZW1hIGZpZWxkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVtYUZpZWxkUHJvcGVydHkge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGZpZWxkLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIEJvb2xlYW4gdmFsdWUgdGhhdCBzcGVjaWZpZXMgd2hldGhlciB2YWx1ZXMgYXJlIHJlcXVpcmVkIGZvciBlYWNoIHJvdyBpbiB0aGlzIGZpZWxkLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCB0aGlzIGlzIGBmYWxzZWAgYW5kIG51bGwgdmFsdWVzIGFyZSBhbGxvd2VkIGluIHRoZSBmaWVsZC4gSWYgdGhpcyBpcyBgdHJ1ZWAsIHRoZSBmaWVsZCBkb2VzIG5vdCBhbGxvdyBudWxsIHZhbHVlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVpcmVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGZpZWxkIHR5cGUuXG4gICAqXG4gICAqIFMzIFRhYmxlcyBzdXBwb3J0cyBhbGwgQXBhY2hlIEljZWJlcmcgcHJpbWl0aXZlIHR5cGVzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSBbQXBhY2hlIEljZWJlcmcgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9pY2ViZXJnLmFwYWNoZS5vcmcvc3BlYy8jcHJpbWl0aXZlLXR5cGVzKS5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb250YWlucyBkZXRhaWxzIGFib3V0IHRoZSBzbmFwc2hvdCBtYW5hZ2VtZW50IHNldHRpbmdzIGZvciBhbiBJY2ViZXJnIHRhYmxlLlxuICpcbiAqIEEgc25hcHNob3QgaXMgZXhwaXJlZCB3aGVuIGl0IGV4Y2VlZHMgTWluU25hcHNob3RzVG9LZWVwIGFuZCBNYXhTbmFwc2hvdEFnZUhvdXJzLlxuICpcbiAqIEBkZWZhdWx0IC0gTm8gc25hcHNob3QgbWFuYWdlbWVudCBzZXR0aW5nc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNuYXBzaG90TWFuYWdlbWVudFByb3BlcnR5IHtcbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIGFnZSBvZiBhIHNuYXBzaG90IGJlZm9yZSBpdCBjYW4gYmUgZXhwaXJlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBtYXhpbXVtIGFnZVxuICAgKi9cbiAgcmVhZG9ubHkgbWF4U25hcHNob3RBZ2VIb3Vycz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG1pbmltdW0gbnVtYmVyIG9mIHNuYXBzaG90cyB0byBrZWVwLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIG1pbmltdW0gbnVtYmVyXG4gICAqL1xuICByZWFkb25seSBtaW5TbmFwc2hvdHNUb0tlZXA/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBTbmFwc2hvdE1hbmFnZW1lbnQgbWFpbnRlbmFuY2UgYWN0aW9uIGlzIGVuYWJsZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm90IHNwZWNpZmllZFxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdHVzPzogU3RhdHVzO1xufVxuXG4vKipcbiAqIEEgcmVmZXJlbmNlIHRvIGEgdGFibGUgb3V0c2lkZSB0aGlzIHN0YWNrXG4gKlxuICogVGhlIHRhYmxlTmFtZSwgcmVnaW9uLCBhbmQgYWNjb3VudCBjYW4gYmUgcHJvdmlkZWQgZXhwbGljaXRseVxuICogb3Igd2lsbCBiZSBpbmZlcnJlZCBmcm9tIHRoZSB0YWJsZUFyblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlQXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoaXMgdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IHRhYmxlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFibGUncyBBUk4uXG4gICAqL1xuICByZWFkb25seSB0YWJsZUFybjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFuIFMzIFRhYmxlIHdpdGggaGVscGVycy5cbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIFRhYmxlIGV4dGVuZHMgVGFibGVCYXNlIHtcbiAgLyoqIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhpcyBjbGFzcy4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9QRVJUWV9JTkpFQ1RJT05fSUQ6IHN0cmluZyA9ICdAYXdzLWNkay5hd3MtczN0YWJsZXMtYWxwaGEuVGFibGUnO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGEgVGFibGUgY29uc3RydWN0IHRoYXQgcmVwcmVzZW50cyBhbiBleHRlcm5hbCB0YWJsZS5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBwYXJlbnQgY3JlYXRpbmcgY29uc3RydWN0ICh1c3VhbGx5IGB0aGlzYCkuXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0J3MgbmFtZS5cbiAgICogQHBhcmFtIGF0dHJzIEEgYFRhYmxlQXR0cmlidXRlc2Agb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHRhYmxlIG5hbWUgYW5kIEFSTi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVRhYmxlQXR0cmlidXRlcyhcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgYXR0cnM6IFRhYmxlQXR0cmlidXRlcyxcbiAgKTogSVRhYmxlIHtcbiAgICBjb25zdCB0YWJsZUFybiA9IGF0dHJzLnRhYmxlQXJuO1xuICAgIFRhYmxlLnZhbGlkYXRlVGFibGVOYW1lKGF0dHJzLnRhYmxlTmFtZSk7XG5cbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBUYWJsZUJhc2Uge1xuICAgICAgcHVibGljIHJlYWRvbmx5IHRhYmxlTmFtZSA9IGF0dHJzLnRhYmxlTmFtZTtcbiAgICAgIHB1YmxpYyByZWFkb25seSB0YWJsZUFybiA9IHRhYmxlQXJuO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHRhYmxlUG9saWN5PzogQ2ZuVGFibGVQb2xpY3k7XG4gICAgICBwcm90ZWN0ZWQgYXV0b0NyZWF0ZVBvbGljeTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgICAvKipcbiAgICAgICAqIEV4cG9ydHMgdGhpcyAgZnJvbSB0aGUgc3RhY2suXG4gICAgICAgKi9cbiAgICAgIHB1YmxpYyBleHBvcnQoKSB7XG4gICAgICAgIHJldHVybiBhdHRycztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydChzY29wZSwgaWQsIHtcbiAgICAgIGVudmlyb25tZW50RnJvbUFybjogdGFibGVBcm4sXG4gICAgICBwaHlzaWNhbE5hbWU6IHRhYmxlQXJuLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9zMy10YWJsZXMtYnVja2V0cy1uYW1pbmcuaHRtbFxuICAgKiBAcGFyYW0gdGFibGVOYW1lIE5hbWUgb2YgdGhlIHRhYmxlXG4gICAqIEB0aHJvd3MgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IgaWYgYW55IG5hbWluZyBlcnJvcnMgYXJlIGRldGVjdGVkXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHZhbGlkYXRlVGFibGVOYW1lKHRhYmxlTmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKHRhYmxlTmFtZSA9PSB1bmRlZmluZWQgfHwgVG9rZW4uaXNVbnJlc29sdmVkKHRhYmxlTmFtZSkpIHtcbiAgICAgIC8vIHRoZSBuYW1lIGlzIGEgbGF0ZS1ib3VuZCB2YWx1ZSwgbm90IGEgZGVmaW5lZCBzdHJpbmcsIHNvIHNraXAgdmFsaWRhdGlvblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcblxuICAgIC8vIExlbmd0aCB2YWxpZGF0aW9uXG4gICAgaWYgKHRhYmxlTmFtZS5sZW5ndGggPCAxIHx8IHRhYmxlTmFtZS5sZW5ndGggPiAyNTUpIHtcbiAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICAnVGFibGUgbmFtZSBtdXN0IGJlIGF0IGxlYXN0IDEgYW5kIG5vIG1vcmUgdGhhbiAyNTUgY2hhcmFjdGVycycsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIENoYXJhY3RlciBzZXQgdmFsaWRhdGlvblxuICAgIGNvbnN0IGlsbGVnYWxDaGFyc2V0UmVnRXggPSAvW15hLXowLTlfXS87XG4gICAgY29uc3QgYWxsb3dlZEVkZ2VDaGFyc2V0UmVnRXggPSAvW2EtejAtOV0vO1xuXG4gICAgY29uc3QgaWxsZWdhbENoYXJNYXRjaCA9IHRhYmxlTmFtZS5tYXRjaChpbGxlZ2FsQ2hhcnNldFJlZ0V4KTtcbiAgICBpZiAoaWxsZWdhbENoYXJNYXRjaCkge1xuICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgICdUYWJsZSBuYW1lIG11c3Qgb25seSBjb250YWluIGxvd2VyY2FzZSBjaGFyYWN0ZXJzLCBudW1iZXJzLCBhbmQgdW5kZXJzY29yZXMgKF8pJyArXG4gICAgICAgICAgYCAob2Zmc2V0OiAke2lsbGVnYWxDaGFyTWF0Y2guaW5kZXh9KWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIEVkZ2UgY2hhcmFjdGVyIHZhbGlkYXRpb25cbiAgICBpZiAoIWFsbG93ZWRFZGdlQ2hhcnNldFJlZ0V4LnRlc3QodGFibGVOYW1lLmNoYXJBdCgwKSkpIHtcbiAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICAnVGFibGUgbmFtZSBtdXN0IHN0YXJ0IHdpdGggYSBsb3dlcmNhc2UgbGV0dGVyIG9yIG51bWJlciAob2Zmc2V0OiAwKScsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoIWFsbG93ZWRFZGdlQ2hhcnNldFJlZ0V4LnRlc3QodGFibGVOYW1lLmNoYXJBdCh0YWJsZU5hbWUubGVuZ3RoIC0gMSkpKSB7XG4gICAgICBlcnJvcnMucHVzaChcbiAgICAgICAgYFRhYmxlIG5hbWUgbXVzdCBlbmQgd2l0aCBhIGxvd2VyY2FzZSBsZXR0ZXIgb3IgbnVtYmVyIChvZmZzZXQ6ICR7XG4gICAgICAgICAgdGFibGVOYW1lLmxlbmd0aCAtIDFcbiAgICAgICAgfSlgLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgYEludmFsaWQgUzMgdGFibGUgbmFtZSAodmFsdWU6ICR7dGFibGVOYW1lfSkke0VPTH0ke2Vycm9ycy5qb2luKEVPTCl9YCxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB1bmlxdWUgQW1hem9uIFJlc291cmNlIE5hbWUgKGFybikgb2YgdGhpcyB0YWJsZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRhYmxlQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB1bmRlcmx5aW5nIENmblRhYmxlIEwxIHJlc291cmNlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfcmVzb3VyY2U6IENmblRhYmxlO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGlzIHRhYmxlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdGFibGVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lc3BhY2UgY29udGFpbmluZyB0aGlzIHRhYmxlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbmFtZXNwYWNlOiBJTmFtZXNwYWNlO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UgcG9saWN5IGZvciB0aGlzIHRhYmxlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRhYmxlUG9saWN5PzogQ2ZuVGFibGVQb2xpY3k7XG5cbiAgcHJvdGVjdGVkIGF1dG9DcmVhdGVQb2xpY3k6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBUYWJsZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7fSk7XG5cbiAgICAvLyBFbmhhbmNlZCBDREsgQW5hbHl0aWNzIFRlbGVtZXRyeVxuICAgIGFkZENvbnN0cnVjdE1ldGFkYXRhKHRoaXMsIHByb3BzKTtcblxuICAgIFRhYmxlLnZhbGlkYXRlVGFibGVOYW1lKHByb3BzLnRhYmxlTmFtZSk7XG5cbiAgICB0aGlzLl9yZXNvdXJjZSA9IG5ldyBDZm5UYWJsZSh0aGlzLCBpZCwge1xuICAgICAgdGFibGVOYW1lOiBwcm9wcy50YWJsZU5hbWUsXG4gICAgICBvcGVuVGFibGVGb3JtYXQ6IHByb3BzLm9wZW5UYWJsZUZvcm1hdCxcbiAgICAgIHRhYmxlQnVja2V0QXJuOiBwcm9wcy5uYW1lc3BhY2UudGFibGVCdWNrZXQudGFibGVCdWNrZXRBcm4sXG4gICAgICBuYW1lc3BhY2U6IHByb3BzLm5hbWVzcGFjZS5uYW1lc3BhY2VOYW1lLFxuICAgICAgY29tcGFjdGlvbjogcHJvcHMuY29tcGFjdGlvbixcbiAgICAgIGljZWJlcmdNZXRhZGF0YTogcHJvcHMuaWNlYmVyZ01ldGFkYXRhLFxuICAgICAgc25hcHNob3RNYW5hZ2VtZW50OiBwcm9wcy5zbmFwc2hvdE1hbmFnZW1lbnQsXG4gICAgICB3aXRob3V0TWV0YWRhdGE6IHByb3BzLndpdGhvdXRNZXRhZGF0YSA/ICdZZXMnIDogdW5kZWZpbmVkLFxuICAgIH0pO1xuXG4gICAgdGhpcy5uYW1lc3BhY2UgPSBwcm9wcy5uYW1lc3BhY2U7XG4gICAgdGhpcy50YWJsZU5hbWUgPSBwcm9wcy50YWJsZU5hbWU7XG4gICAgdGhpcy50YWJsZUFybiA9IHRoaXMuX3Jlc291cmNlLmF0dHJUYWJsZUFybjtcbiAgICB0aGlzLl9yZXNvdXJjZS5hcHBseVJlbW92YWxQb2xpY3kocHJvcHMucmVtb3ZhbFBvbGljeSk7XG4gICAgdGhpcy5ub2RlLmFkZERlcGVuZGVuY3kodGhpcy5uYW1lc3BhY2UpO1xuICB9XG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aws-cdk/aws-s3tables-alpha",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.235.1-alpha.0",
|
|
5
5
|
"description": "CDK Constructs for S3 Tables",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"types": "lib/index.d.ts",
|
|
@@ -77,17 +77,17 @@
|
|
|
77
77
|
},
|
|
78
78
|
"license": "Apache-2.0",
|
|
79
79
|
"devDependencies": {
|
|
80
|
-
"aws-cdk-lib": "2.
|
|
81
|
-
"@aws-cdk/cdk-build-tools": "2.
|
|
82
|
-
"@aws-cdk/pkglint": "2.
|
|
80
|
+
"aws-cdk-lib": "2.235.1",
|
|
81
|
+
"@aws-cdk/cdk-build-tools": "2.235.1-alpha.0",
|
|
82
|
+
"@aws-cdk/pkglint": "2.235.1-alpha.0",
|
|
83
83
|
"@types/jest": "^29.5.14",
|
|
84
84
|
"constructs": "^10.0.0",
|
|
85
85
|
"jest": "^29.7.0",
|
|
86
|
-
"@aws-cdk/integ-tests-alpha": "2.
|
|
86
|
+
"@aws-cdk/integ-tests-alpha": "2.235.1-alpha.0"
|
|
87
87
|
},
|
|
88
88
|
"homepage": "https://github.com/aws/aws-cdk",
|
|
89
89
|
"peerDependencies": {
|
|
90
|
-
"aws-cdk-lib": "^2.
|
|
90
|
+
"aws-cdk-lib": "^2.235.1",
|
|
91
91
|
"constructs": "^10.0.0"
|
|
92
92
|
},
|
|
93
93
|
"separate-module": false,
|