raindancers-cloudfront 0.0.42 → 0.0.44
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/lib/cloudfront/lambda-bundled/cognito-auth/__pycache__/six.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/_cffi_gen_src.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/_imp_emulation.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/_shimmed_dist_utils.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/api.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/backend_ctypes.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/cffi_opcode.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/commontypes.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/cparser.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/error.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/ffiplatform.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/gen_src.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/lock.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/model.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/pkgconfig.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/recompiler.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/setuptools_ext.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/vengine_cpy.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/vengine_gen.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cffi/__pycache__/verifier.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/__pycache__/__about__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/__pycache__/exceptions.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/__pycache__/fernet.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/__pycache__/utils.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/__pycache__/_oid.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/backends/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/backends/openssl/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/backends/openssl/__pycache__/aead.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/backends/openssl/__pycache__/backend.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/backends/openssl/__pycache__/ciphers.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/backends/openssl/__pycache__/cmac.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/backends/openssl/__pycache__/decode_asn1.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/backends/openssl/__pycache__/ec.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/backends/openssl/__pycache__/rsa.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/backends/openssl/__pycache__/utils.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/bindings/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/bindings/openssl/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/bindings/openssl/__pycache__/_conditional.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/bindings/openssl/__pycache__/binding.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/__pycache__/_asymmetric.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/__pycache__/_cipheralgorithm.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/__pycache__/_serialization.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/__pycache__/cmac.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/__pycache__/constant_time.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/__pycache__/hashes.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/__pycache__/hmac.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/__pycache__/keywrap.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/__pycache__/padding.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/__pycache__/poly1305.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/dh.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/dsa.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/ec.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/ed25519.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/ed448.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/padding.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/rsa.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/types.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/utils.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/x25519.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/x448.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/ciphers/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/ciphers/__pycache__/aead.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/ciphers/__pycache__/algorithms.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/ciphers/__pycache__/base.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/ciphers/__pycache__/modes.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/kdf/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/kdf/__pycache__/concatkdf.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/kdf/__pycache__/hkdf.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/kdf/__pycache__/kbkdf.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/kdf/__pycache__/pbkdf2.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/kdf/__pycache__/scrypt.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/kdf/__pycache__/x963kdf.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/serialization/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/serialization/__pycache__/base.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/serialization/__pycache__/pkcs12.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/serialization/__pycache__/pkcs7.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/serialization/__pycache__/ssh.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/twofactor/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/twofactor/__pycache__/hotp.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/hazmat/primitives/twofactor/__pycache__/totp.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/x509/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/x509/__pycache__/base.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/x509/__pycache__/certificate_transparency.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/x509/__pycache__/extensions.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/x509/__pycache__/general_name.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/x509/__pycache__/name.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/x509/__pycache__/ocsp.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/cryptography/x509/__pycache__/oid.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/jwt/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/jwt/__pycache__/algorithms.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/jwt/__pycache__/api_jwk.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/jwt/__pycache__/api_jws.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/jwt/__pycache__/api_jwt.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/jwt/__pycache__/exceptions.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/jwt/__pycache__/help.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/jwt/__pycache__/jwk_set_cache.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/jwt/__pycache__/jwks_client.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/jwt/__pycache__/types.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/jwt/__pycache__/utils.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/jwt/__pycache__/warnings.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/pycparser/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/pycparser/__pycache__/_ast_gen.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/pycparser/__pycache__/ast_transforms.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/pycparser/__pycache__/c_ast.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/pycparser/__pycache__/c_generator.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/pycparser/__pycache__/c_lexer.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-auth/pycparser/__pycache__/c_parser.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/__pycache__/debug.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/__pycache__/error.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/codec/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/codec/__pycache__/streaming.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/codec/ber/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/codec/ber/__pycache__/decoder.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/codec/ber/__pycache__/encoder.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/codec/ber/__pycache__/eoo.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/codec/cer/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/codec/cer/__pycache__/decoder.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/codec/cer/__pycache__/encoder.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/codec/der/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/codec/der/__pycache__/decoder.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/codec/der/__pycache__/encoder.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/codec/native/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/codec/native/__pycache__/decoder.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/codec/native/__pycache__/encoder.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/compat/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/compat/__pycache__/integer.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/type/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/type/__pycache__/base.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/type/__pycache__/char.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/type/__pycache__/constraint.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/type/__pycache__/error.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/type/__pycache__/namedtype.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/type/__pycache__/namedval.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/type/__pycache__/opentype.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/type/__pycache__/tag.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/type/__pycache__/tagmap.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/type/__pycache__/univ.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/pyasn1/type/__pycache__/useful.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/rsa/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/rsa/__pycache__/asn1.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/rsa/__pycache__/cli.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/rsa/__pycache__/common.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/rsa/__pycache__/core.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/rsa/__pycache__/key.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/rsa/__pycache__/parallel.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/rsa/__pycache__/pem.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/rsa/__pycache__/pkcs1.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/rsa/__pycache__/pkcs1_v2.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/rsa/__pycache__/prime.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/rsa/__pycache__/randnum.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/rsa/__pycache__/transform.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/cognito-customui-session/rsa/__pycache__/util.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/__pycache__/six.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cffi/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cffi/__pycache__/_cffi_gen_src.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cffi/__pycache__/_imp_emulation.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cffi/__pycache__/_shimmed_dist_utils.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cffi/__pycache__/api.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cffi/__pycache__/backend_ctypes.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cffi/__pycache__/cffi_opcode.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cffi/__pycache__/commontypes.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cffi/__pycache__/cparser.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cffi/__pycache__/error.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cffi/__pycache__/ffiplatform.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cffi/__pycache__/gen_src.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cffi/__pycache__/lock.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cffi/__pycache__/model.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cffi/__pycache__/pkgconfig.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cffi/__pycache__/recompiler.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cffi/__pycache__/setuptools_ext.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cffi/__pycache__/vengine_cpy.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cffi/__pycache__/vengine_gen.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cffi/__pycache__/verifier.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/__pycache__/__about__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/__pycache__/exceptions.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/__pycache__/fernet.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/__pycache__/utils.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/__pycache__/_oid.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/backends/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/backends/openssl/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/backends/openssl/__pycache__/aead.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/backends/openssl/__pycache__/backend.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/backends/openssl/__pycache__/ciphers.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/backends/openssl/__pycache__/cmac.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/backends/openssl/__pycache__/decode_asn1.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/backends/openssl/__pycache__/ec.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/backends/openssl/__pycache__/rsa.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/backends/openssl/__pycache__/utils.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/bindings/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/bindings/openssl/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/bindings/openssl/__pycache__/_conditional.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/bindings/openssl/__pycache__/binding.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/__pycache__/_asymmetric.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/__pycache__/_cipheralgorithm.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/__pycache__/_serialization.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/__pycache__/cmac.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/__pycache__/constant_time.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/__pycache__/hashes.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/__pycache__/hmac.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/__pycache__/keywrap.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/__pycache__/padding.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/__pycache__/poly1305.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/dh.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/dsa.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/ec.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/ed25519.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/ed448.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/padding.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/rsa.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/types.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/utils.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/x25519.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/asymmetric/__pycache__/x448.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/ciphers/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/ciphers/__pycache__/aead.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/ciphers/__pycache__/algorithms.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/ciphers/__pycache__/base.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/ciphers/__pycache__/modes.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/kdf/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/kdf/__pycache__/concatkdf.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/kdf/__pycache__/hkdf.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/kdf/__pycache__/kbkdf.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/kdf/__pycache__/pbkdf2.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/kdf/__pycache__/scrypt.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/kdf/__pycache__/x963kdf.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/serialization/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/serialization/__pycache__/base.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/serialization/__pycache__/pkcs12.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/serialization/__pycache__/pkcs7.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/serialization/__pycache__/ssh.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/twofactor/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/twofactor/__pycache__/hotp.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/hazmat/primitives/twofactor/__pycache__/totp.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/x509/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/x509/__pycache__/base.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/x509/__pycache__/certificate_transparency.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/x509/__pycache__/extensions.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/x509/__pycache__/general_name.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/x509/__pycache__/name.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/x509/__pycache__/ocsp.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/cryptography/x509/__pycache__/oid.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/jwt/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/jwt/__pycache__/algorithms.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/jwt/__pycache__/api_jwk.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/jwt/__pycache__/api_jws.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/jwt/__pycache__/api_jwt.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/jwt/__pycache__/exceptions.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/jwt/__pycache__/help.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/jwt/__pycache__/jwk_set_cache.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/jwt/__pycache__/jwks_client.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/jwt/__pycache__/types.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/jwt/__pycache__/utils.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/jwt/__pycache__/warnings.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/pycparser/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/pycparser/__pycache__/_ast_gen.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/pycparser/__pycache__/ast_transforms.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/pycparser/__pycache__/c_ast.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/pycparser/__pycache__/c_generator.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/pycparser/__pycache__/c_lexer.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/edge-auth/pycparser/__pycache__/c_parser.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/__pycache__/six.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/awscrt/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/awscrt/__pycache__/_aws_iot_metrics.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/awscrt/__pycache__/_test.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/awscrt/__pycache__/auth.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/awscrt/__pycache__/cbor.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/awscrt/__pycache__/checksums.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/awscrt/__pycache__/common.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/awscrt/__pycache__/crypto.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/awscrt/__pycache__/exceptions.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/awscrt/__pycache__/http.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/awscrt/__pycache__/io.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/awscrt/__pycache__/logging.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/awscrt/__pycache__/mqtt.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/awscrt/__pycache__/mqtt5.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/awscrt/__pycache__/mqtt_request_response.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/awscrt/__pycache__/s3.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/awscrt/__pycache__/websocket.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/awscrt/aio/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/awscrt/aio/__pycache__/http.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/awscrt/eventstream/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/awscrt/eventstream/__pycache__/rpc.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/bin/__pycache__/jp.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/args.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/auth.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/awsrequest.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/client.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/compat.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/compress.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/config.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/configloader.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/configprovider.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/context.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/credentials.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/discovery.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/endpoint.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/endpoint_provider.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/errorfactory.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/eventstream.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/exceptions.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/handlers.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/history.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/hooks.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/httpchecksum.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/httpsession.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/loaders.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/model.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/monitoring.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/paginate.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/parsers.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/plugin.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/regions.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/response.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/retryhandler.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/serialize.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/session.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/signers.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/stub.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/tokens.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/translate.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/useragent.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/utils.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/validate.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/__pycache__/waiter.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/crt/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/crt/__pycache__/auth.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/docs/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/docs/__pycache__/client.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/docs/__pycache__/docstring.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/docs/__pycache__/example.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/docs/__pycache__/method.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/docs/__pycache__/paginator.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/docs/__pycache__/params.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/docs/__pycache__/service.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/docs/__pycache__/shape.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/docs/__pycache__/sharedexample.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/docs/__pycache__/translator.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/docs/__pycache__/utils.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/docs/__pycache__/waiter.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/docs/bcdoc/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/docs/bcdoc/__pycache__/docstringparser.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/docs/bcdoc/__pycache__/restdoc.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/docs/bcdoc/__pycache__/style.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/retries/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/retries/__pycache__/adaptive.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/retries/__pycache__/base.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/retries/__pycache__/bucket.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/retries/__pycache__/quota.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/retries/__pycache__/special.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/retries/__pycache__/standard.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/retries/__pycache__/throttling.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/vendored/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/vendored/__pycache__/six.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/vendored/requests/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/vendored/requests/__pycache__/exceptions.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/vendored/requests/packages/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/vendored/requests/packages/urllib3/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/botocore/vendored/requests/packages/urllib3/__pycache__/exceptions.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/dateutil/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/dateutil/__pycache__/_common.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/dateutil/__pycache__/_version.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/dateutil/__pycache__/easter.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/dateutil/__pycache__/relativedelta.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/dateutil/__pycache__/rrule.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/dateutil/__pycache__/tzwin.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/dateutil/__pycache__/utils.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/dateutil/parser/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/dateutil/parser/__pycache__/_parser.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/dateutil/parser/__pycache__/isoparser.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/dateutil/tz/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/dateutil/tz/__pycache__/_common.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/dateutil/tz/__pycache__/_factories.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/dateutil/tz/__pycache__/tz.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/dateutil/tz/__pycache__/win.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/dateutil/zoneinfo/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/dateutil/zoneinfo/__pycache__/rebuild.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/jmespath/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/jmespath/__pycache__/ast.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/jmespath/__pycache__/compat.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/jmespath/__pycache__/exceptions.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/jmespath/__pycache__/functions.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/jmespath/__pycache__/lexer.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/jmespath/__pycache__/parser.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/jmespath/__pycache__/visitor.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/__pycache__/_base_connection.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/__pycache__/_collections.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/__pycache__/_request_methods.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/__pycache__/_version.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/__pycache__/connection.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/__pycache__/connectionpool.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/__pycache__/exceptions.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/__pycache__/fields.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/__pycache__/filepost.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/__pycache__/poolmanager.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/__pycache__/response.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/contrib/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/contrib/__pycache__/pyopenssl.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/contrib/__pycache__/socks.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/contrib/emscripten/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/contrib/emscripten/__pycache__/connection.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/contrib/emscripten/__pycache__/fetch.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/contrib/emscripten/__pycache__/request.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/contrib/emscripten/__pycache__/response.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/http2/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/http2/__pycache__/connection.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/http2/__pycache__/probe.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/util/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/util/__pycache__/connection.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/util/__pycache__/proxy.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/util/__pycache__/request.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/util/__pycache__/response.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/util/__pycache__/retry.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/util/__pycache__/ssl_.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/util/__pycache__/ssl_match_hostname.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/util/__pycache__/ssltransport.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/util/__pycache__/timeout.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/util/__pycache__/url.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/util/__pycache__/util.cpython-312.pyc +0 -0
- package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/util/__pycache__/wait.cpython-312.pyc +0 -0
- package/lib/cloudfront/patterns/cognitoCustomerPool.d.ts +62 -0
- package/lib/cloudfront/patterns/cognitoCustomerPool.js +74 -15
- package/package.json +1 -1
package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/util/__pycache__/url.cpython-312.pyc
CHANGED
|
Binary file
|
package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/util/__pycache__/util.cpython-312.pyc
CHANGED
|
Binary file
|
package/lib/cloudfront/lambda-bundled/hmacSecret/urllib3/util/__pycache__/wait.cpython-312.pyc
CHANGED
|
Binary file
|
|
@@ -19,6 +19,29 @@ export interface CognitoAppClientSpec {
|
|
|
19
19
|
/** Generate a client secret. @default false (public SPA client) */
|
|
20
20
|
readonly generateSecret?: boolean;
|
|
21
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Same-account SES email configuration for the pool. Synthesises an
|
|
24
|
+
* `EmailConfiguration` with `EmailSendingAccount: DEVELOPER`. Its purpose is to
|
|
25
|
+
* satisfy Cognito's precondition for enabling EMAIL_OTP MFA — Cognito requires a
|
|
26
|
+
* verified same-account SES identity on the pool before it will accept
|
|
27
|
+
* `EnabledMfas: ['EMAIL_OTP']`, independently of any custom email sender that
|
|
28
|
+
* overrides actual delivery.
|
|
29
|
+
*/
|
|
30
|
+
export interface CognitoCustomerPoolEmailConfig {
|
|
31
|
+
/**
|
|
32
|
+
* ARN of a VERIFIED SES identity in the POOL's OWN account (domain identity
|
|
33
|
+
* preferred; a verified email-address identity also works). Passed to Cognito as
|
|
34
|
+
* the `EmailConfiguration.SourceArn`. Must be in the pool's region.
|
|
35
|
+
*/
|
|
36
|
+
readonly sesVerifiedDomainArn: string;
|
|
37
|
+
/**
|
|
38
|
+
* The From address for the pool's SES configuration, e.g.
|
|
39
|
+
* `2fa@alpha.functionalself.com`. A local-part on the verified identity's domain.
|
|
40
|
+
*/
|
|
41
|
+
readonly fromEmail: string;
|
|
42
|
+
/** Optional display name, e.g. "Functional Self". @default - address only */
|
|
43
|
+
readonly fromName?: string;
|
|
44
|
+
}
|
|
22
45
|
/**
|
|
23
46
|
* Optional Cognito Identity Pool + ABAC (attributes-for-access-control) config.
|
|
24
47
|
* Maps token claims to principal tags so downstream IAM can scope on them.
|
|
@@ -89,6 +112,29 @@ export interface CognitoCustomerPoolProps {
|
|
|
89
112
|
* @default false
|
|
90
113
|
*/
|
|
91
114
|
readonly emailOtpMfa?: boolean;
|
|
115
|
+
/**
|
|
116
|
+
* Configure the pool for PASSWORDLESS customer sign-in using choice-based
|
|
117
|
+
* authentication (`USER_AUTH`) with `EMAIL_OTP` as a first auth factor. The
|
|
118
|
+
* customer signs in with just their email and a one-time code — no password and
|
|
119
|
+
* no second factor. Delivered by {@link customEmailSenderLambda}; requires
|
|
120
|
+
* {@link customSenderKmsKey} and {@link emailConfiguration} (same enablement
|
|
121
|
+
* precondition as {@link emailOtpMfa}), and an Essentials-or-higher feature plan.
|
|
122
|
+
*
|
|
123
|
+
* Hard Cognito constraints this mode encodes (proven against a live pool):
|
|
124
|
+
* - `PASSWORD` is MANDATORY in `AllowedFirstAuthFactors`; Cognito rejects a list
|
|
125
|
+
* without it. So the pool allows `[PASSWORD, EMAIL_OTP]` and the CONSUMER's UI
|
|
126
|
+
* must never offer the password path (always `InitiateAuth(USER_AUTH,
|
|
127
|
+
* PREFERRED_CHALLENGE=EMAIL_OTP)`). To keep the password unreachable through the
|
|
128
|
+
* app client too, this mode also drops the `userSrp` auth flow and enables the
|
|
129
|
+
* `user` (choice-based `ALLOW_USER_AUTH`) flow on the app clients.
|
|
130
|
+
* - `EMAIL_OTP` as a first factor is INCOMPATIBLE with `MfaConfiguration: ON`, so
|
|
131
|
+
* this mode forces `mfa: OFF`. NOTE: the `OFF -> ON` transition is irreversible
|
|
132
|
+
* via the API, so a pool created with this mode cannot later gain MFA in place.
|
|
133
|
+
*
|
|
134
|
+
* Mutually exclusive with {@link emailOtpMfa} (email is a first factor here, a
|
|
135
|
+
* second factor there). @default false
|
|
136
|
+
*/
|
|
137
|
+
readonly passwordlessEmailOtp?: boolean;
|
|
92
138
|
/**
|
|
93
139
|
* Custom Email Sender Lambda. When set (together with {@link customSenderKmsKey}),
|
|
94
140
|
* it is wired to the pool via the `CUSTOM_EMAIL_SENDER` trigger and Cognito
|
|
@@ -106,6 +152,22 @@ export interface CognitoCustomerPoolProps {
|
|
|
106
152
|
* @default - no key (only valid when no custom email sender is set)
|
|
107
153
|
*/
|
|
108
154
|
readonly customSenderKmsKey?: kms.IKey;
|
|
155
|
+
/**
|
|
156
|
+
* Same-account SES email configuration for the pool. REQUIRED when
|
|
157
|
+
* {@link emailOtpMfa} is set: Cognito refuses to enable EMAIL_OTP MFA unless the
|
|
158
|
+
* pool carries an `EmailSendingAccount: DEVELOPER` configuration pointing at a
|
|
159
|
+
* VERIFIED SES identity in the pool's OWN account — this precondition is validated
|
|
160
|
+
* at the pool-config layer, BEFORE any email is routed, so a
|
|
161
|
+
* {@link customEmailSenderLambda} (which overrides delivery) does not satisfy it.
|
|
162
|
+
*
|
|
163
|
+
* The identity here exists only to satisfy that enablement precondition; when a
|
|
164
|
+
* custom email sender is attached, Cognito never actually sends through this
|
|
165
|
+
* identity (the Lambda intercepts every email), so a cross-account or
|
|
166
|
+
* SES-sandbox delivery path is unaffected. Prefer a verified DOMAIN identity;
|
|
167
|
+
* a verified email-address identity also works if Cognito rejects the domain form.
|
|
168
|
+
* @default - no SES config (Cognito default sender; not valid with emailOtpMfa)
|
|
169
|
+
*/
|
|
170
|
+
readonly emailConfiguration?: CognitoCustomerPoolEmailConfig;
|
|
109
171
|
/**
|
|
110
172
|
* L1 account-takeover risk configuration (requires {@link advancedSecurityMode}
|
|
111
173
|
* ENFORCED/AUDIT). Passed through to CfnUserPoolRiskConfigurationAttachment.
|
|
@@ -62,27 +62,50 @@ class CognitoCustomerPool extends constructs.Construct {
|
|
|
62
62
|
throw new Error('CognitoCustomerPool: emailOtpMfa requires customEmailSenderLambda (and customSenderKmsKey) — '
|
|
63
63
|
+ 'EMAIL_OTP codes are delivered by the custom email sender, so email MFA cannot be enabled without it.');
|
|
64
64
|
}
|
|
65
|
+
if (props.emailOtpMfa && !props.emailConfiguration) {
|
|
66
|
+
throw new Error('CognitoCustomerPool: emailOtpMfa requires emailConfiguration — '
|
|
67
|
+
+ 'Cognito refuses to enable EMAIL_OTP MFA unless the pool carries a DEVELOPER SES '
|
|
68
|
+
+ 'EmailConfiguration on a verified same-account identity. This precondition is checked '
|
|
69
|
+
+ 'before any email is routed, so the custom email sender does not satisfy it.');
|
|
70
|
+
}
|
|
71
|
+
if (props.passwordlessEmailOtp && props.emailOtpMfa) {
|
|
72
|
+
throw new Error('CognitoCustomerPool: passwordlessEmailOtp and emailOtpMfa are mutually exclusive — '
|
|
73
|
+
+ 'passwordless uses EMAIL_OTP as a FIRST auth factor (MFA off), while emailOtpMfa uses it '
|
|
74
|
+
+ 'as a SECOND factor (MFA on). Choose one.');
|
|
75
|
+
}
|
|
76
|
+
if (props.passwordlessEmailOtp && (!props.customEmailSenderLambda || !props.emailConfiguration)) {
|
|
77
|
+
throw new Error('CognitoCustomerPool: passwordlessEmailOtp requires customEmailSenderLambda, customSenderKmsKey '
|
|
78
|
+
+ 'and emailConfiguration — the first-factor EMAIL_OTP code is delivered by the custom email '
|
|
79
|
+
+ 'sender, and Cognito requires the same DEVELOPER SES EmailConfiguration enablement precondition.');
|
|
80
|
+
}
|
|
65
81
|
// With emailOtpMfa, EMAIL_OTP is the sole factor and is applied via an L1
|
|
66
82
|
// override below; do NOT pass mfaSecondFactor.email to the L2 (its validateEmailMfa
|
|
67
|
-
// demands a
|
|
83
|
+
// demands a `email` UserPoolEmail be set, which we supply separately via
|
|
84
|
+
// emailConfiguration — see the `email` prop below).
|
|
68
85
|
const l2MfaSecondFactor = props.emailOtpMfa
|
|
69
86
|
? { otp: false, sms: false }
|
|
70
87
|
: (props.mfaSecondFactor ?? { otp: true, sms: false });
|
|
71
|
-
// Account recovery must not be email-only when EMAIL_OTP MFA is enabled:
|
|
72
|
-
// Cognito rejects EmailMfaConfiguration unless AccountRecoverySetting has at
|
|
73
|
-
// least one mechanism other than verified_email (recovering email-based MFA via
|
|
74
|
-
// email is circular). AccountRecovery.NONE maps to the admin_only mechanism, which
|
|
75
|
-
// satisfies the constraint without introducing an SMS/phone factor into this
|
|
76
|
-
// passwordless-email design. Otherwise keep the email-only default.
|
|
77
88
|
const accountRecovery = props.emailOtpMfa
|
|
89
|
+
// Cognito rejects EmailMfaConfiguration unless AccountRecoverySetting has at
|
|
90
|
+
// least one mechanism other than verified_email (recovering email-based MFA via
|
|
91
|
+
// email is circular). AccountRecovery.NONE maps to the admin_only mechanism, which
|
|
92
|
+
// satisfies the constraint without introducing an SMS/phone factor into this
|
|
93
|
+
// passwordless-email design. Otherwise keep the email-only default.
|
|
78
94
|
? aws_cdk_lib_1.aws_cognito.AccountRecovery.NONE
|
|
79
95
|
: aws_cdk_lib_1.aws_cognito.AccountRecovery.EMAIL_ONLY;
|
|
96
|
+
// Passwordless uses EMAIL_OTP as a FIRST auth factor, which Cognito forbids while
|
|
97
|
+
// MFA is ON ("Only PASSWORD and WEB_AUTHN can be enabled as an auth factor if MFA
|
|
98
|
+
// is enabled"). So passwordless forces MFA OFF. NB: the OFF->ON transition is
|
|
99
|
+
// irreversible via the API — a pool created passwordless cannot later gain MFA in place.
|
|
100
|
+
const mfaConfig = props.passwordlessEmailOtp
|
|
101
|
+
? aws_cdk_lib_1.aws_cognito.Mfa.OFF
|
|
102
|
+
: (props.mfa ?? aws_cdk_lib_1.aws_cognito.Mfa.REQUIRED);
|
|
80
103
|
this.userPool = new aws_cdk_lib_1.aws_cognito.UserPool(this, 'UserPool', {
|
|
81
104
|
userPoolName: props.userPoolName,
|
|
82
105
|
selfSignUpEnabled: props.selfSignUpEnabled ?? false,
|
|
83
106
|
signInAliases: { email: true },
|
|
84
107
|
signInCaseSensitive: false,
|
|
85
|
-
mfa:
|
|
108
|
+
mfa: mfaConfig,
|
|
86
109
|
mfaSecondFactor: l2MfaSecondFactor,
|
|
87
110
|
passwordPolicy: props.passwordPolicy ?? {
|
|
88
111
|
minLength: 12,
|
|
@@ -108,11 +131,38 @@ class CognitoCustomerPool extends constructs.Construct {
|
|
|
108
131
|
// L1 escape hatch: enable EMAIL_OTP as the only MFA factor. The L2 cannot express
|
|
109
132
|
// "email MFA delivered solely by a custom sender" (see emailOtpMfa docs), so set
|
|
110
133
|
// EnabledMfas directly on the underlying CfnUserPool. The custom email sender
|
|
111
|
-
// delivers the code
|
|
134
|
+
// delivers the code, but Cognito still requires a DEVELOPER SES EmailConfiguration
|
|
135
|
+
// on a verified same-account identity as an ENABLEMENT precondition (below).
|
|
136
|
+
if (props.emailConfiguration) {
|
|
137
|
+
// Set EmailConfiguration via L1 with the caller's exact verified same-account
|
|
138
|
+
// identity ARN — accepting either a domain or an email-address identity without
|
|
139
|
+
// CDK re-deriving the ARN from the From address. This satisfies Cognito's
|
|
140
|
+
// EMAIL_OTP enablement precondition; the custom email sender still overrides
|
|
141
|
+
// actual delivery, so this identity is never sent through.
|
|
142
|
+
const cfnPool = this.userPool.node.defaultChild;
|
|
143
|
+
cfnPool.emailConfiguration = {
|
|
144
|
+
emailSendingAccount: 'DEVELOPER',
|
|
145
|
+
sourceArn: props.emailConfiguration.sesVerifiedDomainArn,
|
|
146
|
+
from: props.emailConfiguration.fromName
|
|
147
|
+
? `${props.emailConfiguration.fromName} <${props.emailConfiguration.fromEmail}>`
|
|
148
|
+
: props.emailConfiguration.fromEmail,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
112
151
|
if (props.emailOtpMfa) {
|
|
113
152
|
const cfnPool = this.userPool.node.defaultChild;
|
|
114
153
|
cfnPool.enabledMfas = ['EMAIL_OTP'];
|
|
115
154
|
}
|
|
155
|
+
if (props.passwordlessEmailOtp) {
|
|
156
|
+
// Choice-based sign-in: EMAIL_OTP as a first auth factor. PASSWORD is MANDATORY
|
|
157
|
+
// in AllowedFirstAuthFactors (Cognito rejects a list without it), so it stays —
|
|
158
|
+
// but the app client below drops the password (userSrp) flow and the consumer's
|
|
159
|
+
// UI never offers it, so the password path is unreachable through this client.
|
|
160
|
+
const cfnPool = this.userPool.node.defaultChild;
|
|
161
|
+
cfnPool.policies = {
|
|
162
|
+
...cfnPool.policies,
|
|
163
|
+
signInPolicy: { allowedFirstAuthFactors: ['PASSWORD', 'EMAIL_OTP'] },
|
|
164
|
+
};
|
|
165
|
+
}
|
|
116
166
|
const preTokenLambda = props.preTokenGenerationLambda ?? new aws_cdk_lib_1.aws_lambda.Function(this, 'PreTokenLambda', {
|
|
117
167
|
runtime: aws_cdk_lib_1.aws_lambda.Runtime.PYTHON_3_12,
|
|
118
168
|
handler: 'index.handler',
|
|
@@ -142,11 +192,20 @@ class CognitoCustomerPool extends constructs.Construct {
|
|
|
142
192
|
const client = new aws_cdk_lib_1.aws_cognito.UserPoolClient(this, `Client${spec.key}`, {
|
|
143
193
|
userPool: this.userPool,
|
|
144
194
|
generateSecret: spec.generateSecret ?? false,
|
|
145
|
-
authFlows:
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
195
|
+
authFlows: props.passwordlessEmailOtp
|
|
196
|
+
? {
|
|
197
|
+
// Passwordless: enable choice-based ALLOW_USER_AUTH and DROP userSrp so the
|
|
198
|
+
// password challenge cannot be initiated through this client — even by a
|
|
199
|
+
// direct API call. PASSWORD stays a pool factor (Cognito's rule) but is
|
|
200
|
+
// unreachable via the storefront client.
|
|
201
|
+
user: true,
|
|
202
|
+
custom: props.enableCustomAuthFlow ?? false,
|
|
203
|
+
}
|
|
204
|
+
: {
|
|
205
|
+
userSrp: true,
|
|
206
|
+
custom: props.enableCustomAuthFlow ?? false,
|
|
207
|
+
// userPassword / adminUserPassword intentionally omitted (disabled).
|
|
208
|
+
},
|
|
150
209
|
oAuth: {
|
|
151
210
|
flows: { authorizationCodeGrant: true },
|
|
152
211
|
scopes: [aws_cdk_lib_1.aws_cognito.OAuthScope.OPENID, aws_cdk_lib_1.aws_cognito.OAuthScope.EMAIL, aws_cdk_lib_1.aws_cognito.OAuthScope.PROFILE],
|
|
@@ -201,4 +260,4 @@ class CognitoCustomerPool extends constructs.Construct {
|
|
|
201
260
|
}
|
|
202
261
|
}
|
|
203
262
|
exports.CognitoCustomerPool = CognitoCustomerPool;
|
|
204
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29nbml0b0N1c3RvbWVyUG9vbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbG91ZGZyb250L3BhdHRlcm5zL2NvZ25pdG9DdXN0b21lclBvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQTZCO0FBQzdCLGtEQUFvQztBQUNwQyw2Q0FLcUI7QUFDckIsdURBQXlDO0FBeUh6Qzs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFhLG1CQUFvQixTQUFRLFVBQVUsQ0FBQyxTQUFTO0lBWTNELFlBQVksS0FBMkIsRUFBRSxFQUFVLEVBQUUsS0FBK0I7UUFDbEYsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN2RCxNQUFNLElBQUksS0FBSyxDQUFDLHNEQUFzRCxDQUFDLENBQUM7UUFDMUUsQ0FBQztRQUVELElBQUksQ0FBQyxLQUFLLENBQUMsdUJBQXVCLEtBQUssU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEtBQUssU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUMvRixNQUFNLElBQUksS0FBSyxDQUNiLGtHQUFrRztrQkFDaEcscUhBQXFILENBQ3hILENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxLQUFLLENBQUMsV0FBVyxJQUFJLENBQUMsS0FBSyxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDeEQsTUFBTSxJQUFJLEtBQUssQ0FDYiwrRkFBK0Y7a0JBQzdGLHNHQUFzRyxDQUN6RyxDQUFDO1FBQ0osQ0FBQztRQUVELDBFQUEwRTtRQUMxRSxvRkFBb0Y7UUFDcEYsZ0ZBQWdGO1FBQ2hGLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDLFdBQVc7WUFDekMsQ0FBQyxDQUFD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aUJBQ3BGLEVBQ0QsK0JBQStCLENBQ2hDO2dCQUNELGVBQWUsRUFBRSxHQUFHLENBQUMsZ0NBQWdDO2FBQ3RELENBQUMsQ0FBQztZQUVILElBQUkseUJBQU8sQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLEVBQUU7Z0JBQ25FLGNBQWMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUc7Z0JBQ3JDLEtBQUssRUFBRSxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFO2FBQ3pELENBQUMsQ0FBQztZQUVILGdFQUFnRTtZQUNoRSxJQUFJLEdBQUcsQ0FBQyxhQUFhLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNuRSxJQUFJLHlCQUFPLENBQUMsMkJBQTJCLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRTtvQkFDN0QsY0FBYyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRztvQkFDckMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0I7b0JBQ3hELFdBQVcsRUFBRSxLQUFLO29CQUNsQixhQUFhLEVBQUUsR0FBRyxDQUFDLGFBQWE7aUJBQ2pDLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBMUxELGtEQTBMQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBjb3JlIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7XG4gIGF3c19jb2duaXRvIGFzIGNvZ25pdG8sXG4gIGF3c19pYW0gYXMgaWFtLFxuICBhd3Nfa21zIGFzIGttcyxcbiAgYXdzX2xhbWJkYSBhcyBsYW1iZGEsXG59IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGNvbnN0cnVjdHMgZnJvbSAnY29uc3RydWN0cyc7XG5cbnR5cGUgQWNjb3VudFRha2VvdmVyUmlza0NvbmZpZyA9IGNvZ25pdG8uQ2ZuVXNlclBvb2xSaXNrQ29uZmlndXJhdGlvbkF0dGFjaG1lbnQuQWNjb3VudFRha2VvdmVyUmlza0NvbmZpZ3VyYXRpb25UeXBlUHJvcGVydHk7XG50eXBlIENvbXByb21pc2VkQ3JlZGVudGlhbHNSaXNrQ29uZmlnID0gY29nbml0by5DZm5Vc2VyUG9vbFJpc2tDb25maWd1cmF0aW9uQXR0YWNobWVudC5Db21wcm9taXNlZENyZWRlbnRpYWxzUmlza0NvbmZpZ3VyYXRpb25UeXBlUHJvcGVydHk7XG5cbi8qKlxuICogU3BlY2lmaWNhdGlvbiBmb3Igb25lIENvZ25pdG8gYXBwIGNsaWVudCAoZS5nLiBvbmUgYnJhbmQgb3Igb25lIGZyb250LWVuZCkuXG4gKiBQdWJsaWMgU1BBIGNsaWVudHM6IG5vIHNlY3JldCwgUEtDRSAoYXV0aG9yaXphdGlvbi1jb2RlIGdyYW50KSwgU1JQLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvZ25pdG9BcHBDbGllbnRTcGVjIHtcbiAgLyoqIExvZ2ljYWwga2V5IHVzZWQgYXMgdGhlIGNvbnN0cnVjdCBpZCBhbmQgdGhlIGtleSBpbiB7QGxpbmsgQ29nbml0b0N1c3RvbWVyUG9vbC51c2VyUG9vbENsaWVudHN9LiAqL1xuICByZWFkb25seSBrZXk6IHN0cmluZztcbiAgLyoqIE9BdXRoMiBjYWxsYmFjayBVUkxzIGZvciB0aGlzIGNsaWVudCAodXNlZCBvbmx5IGJ5IHRoZSBzb2NpYWwvaG9zdGVkIHJlZGlyZWN0IGZsb3cpLiAqL1xuICByZWFkb25seSBjYWxsYmFja1VybHM/OiBzdHJpbmdbXTtcbiAgLyoqIExvZ291dCBVUkxzIGZvciB0aGlzIGNsaWVudC4gKi9cbiAgcmVhZG9ubHkgbG9nb3V0VXJscz86IHN0cmluZ1tdO1xuICAvKiogSWRlbnRpdHkgcHJvdmlkZXJzIHRoaXMgY2xpZW50IHN1cHBvcnRzLiBAZGVmYXVsdCBbQ09HTklUT10gKi9cbiAgcmVhZG9ubHkgc3VwcG9ydGVkSWRlbnRpdHlQcm92aWRlcnM/OiBjb2duaXRvLlVzZXJQb29sQ2xpZW50SWRlbnRpdHlQcm92aWRlcltdO1xuICAvKiogR2VuZXJhdGUgYSBjbGllbnQgc2VjcmV0LiBAZGVmYXVsdCBmYWxzZSAocHVibGljIFNQQSBjbGllbnQpICovXG4gIHJlYWRvbmx5IGdlbmVyYXRlU2VjcmV0PzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBPcHRpb25hbCBDb2duaXRvIElkZW50aXR5IFBvb2wgKyBBQkFDIChhdHRyaWJ1dGVzLWZvci1hY2Nlc3MtY29udHJvbCkgY29uZmlnLlxuICogTWFwcyB0b2tlbiBjbGFpbXMgdG8gcHJpbmNpcGFsIHRhZ3Mgc28gZG93bnN0cmVhbSBJQU0gY2FuIHNjb3BlIG9uIHRoZW0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29nbml0b0lkZW50aXR5UG9vbEFiYWNDb25maWcge1xuICAvKiogQWxsb3cgdW5hdXRoZW50aWNhdGVkIChndWVzdCkgaWRlbnRpdGllcy4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgcmVhZG9ubHkgYWxsb3dVbmF1dGhlbnRpY2F0ZWRJZGVudGl0aWVzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIENsYWltIOKGkiBwcmluY2lwYWwtdGFnIG1hcHBpbmcsIGUuZy4gYHsgc3ViOiAnY3VzdG9tZXItaWQnIH1gLiBBcHBsaWVkIHRvIHRoZVxuICAgKiB1c2VyLXBvb2wgcHJvdmlkZXIgc28gYXV0aGVudGljYXRlZCBzZXNzaW9ucyBjYXJyeSB0aGVzZSBhcyBgYXdzOlByaW5jaXBhbFRhZy8qYC5cbiAgICovXG4gIHJlYWRvbmx5IHByaW5jaXBhbFRhZ3M/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAvKiogTWFuYWdlZCBwb2xpY2llcyBmb3IgdGhlIGF1dGhlbnRpY2F0ZWQgcm9sZS4gQGRlZmF1bHQgbm9uZSAoYXR0YWNoIHlvdXIgb3duKS4gKi9cbiAgcmVhZG9ubHkgYXV0aGVudGljYXRlZFJvbGVNYW5hZ2VkUG9saWNpZXM/OiBpYW0uSU1hbmFnZWRQb2xpY3lbXTtcbn1cblxuLyoqXG4gKiBQcm9wcyBmb3Ige0BsaW5rIENvZ25pdG9DdXN0b21lclBvb2x9LiBFdmVyeSB2YWx1ZSBpcyBnZW5lcmljIOKAlCBub1xuICogcHJvamVjdC9icmFuZC9kb21haW4gc3BlY2lmaWNzIGFyZSBiYWtlZCBpbjsgcGFzcyB0aGVtIGhlcmUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29nbml0b0N1c3RvbWVyUG9vbFByb3BzIHtcbiAgLyoqIFVzZXIgcG9vbCBuYW1lLiAqL1xuICByZWFkb25seSB1c2VyUG9vbE5hbWU/OiBzdHJpbmc7XG4gIC8qKiBDb2duaXRvIGhvc3RlZC1VSSBkb21haW4gcHJlZml4IChnbG9iYWxseSB1bmlxdWUpLiAqL1xuICByZWFkb25seSBjb2duaXRvRG9tYWluUHJlZml4OiBzdHJpbmc7XG4gIC8qKiBBcHAgY2xpZW50cyB0byBjcmVhdGUgKHR5cGljYWxseSBvbmUgcGVyIGJyYW5kL2Zyb250LWVuZCkuIEF0IGxlYXN0IG9uZS4gKi9cbiAgcmVhZG9ubHkgYXBwQ2xpZW50czogQ29nbml0b0FwcENsaWVudFNwZWNbXTtcbiAgLyoqIEVuYWJsZSBzZWxmLXNlcnZpY2Ugc2lnbi11cC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgcmVhZG9ubHkgc2VsZlNpZ25VcEVuYWJsZWQ/OiBib29sZWFuO1xuICAvKiogTUZBIGVuZm9yY2VtZW50LiBAZGVmYXVsdCBSRVFVSVJFRCAqL1xuICByZWFkb25seSBtZmE/OiBjb2duaXRvLk1mYTtcbiAgLyoqIFNlY29uZCBmYWN0b3JzLiBAZGVmYXVsdCB7IG90cDogdHJ1ZSwgc21zOiBmYWxzZSB9ICovXG4gIHJlYWRvbmx5IG1mYVNlY29uZEZhY3Rvcj86IGNvZ25pdG8uTWZhU2Vjb25kRmFjdG9yO1xuICAvKiogUGFzc3dvcmQgcG9saWN5LiBAZGVmYXVsdCBtaW5MZW5ndGggMTIsIHVwcGVyL2xvd2VyL2RpZ2l0cy9zeW1ib2xzLiAqL1xuICByZWFkb25seSBwYXNzd29yZFBvbGljeT86IGNvZ25pdG8uUGFzc3dvcmRQb2xpY3k7XG4gIC8qKiBBZHZhbmNlZCBzZWN1cml0eSBtb2RlICh0aHJlYXQgcHJvdGVjdGlvbikuIEBkZWZhdWx0IE9GRiAqL1xuICByZWFkb25seSBhZHZhbmNlZFNlY3VyaXR5TW9kZT86IGNvZ25pdG8uQWR2YW5jZWRTZWN1cml0eU1vZGU7XG4gIC8qKiBTdGFuZGFyZCBhdHRyaWJ1dGVzIGNvbmZpZy4gKi9cbiAgcmVhZG9ubHkgc3RhbmRhcmRBdHRyaWJ1dGVzPzogY29nbml0by5TdGFuZGFyZEF0dHJpYnV0ZXM7XG4gIC8qKiBDdXN0b20gYXR0cmlidXRlcy4gKi9cbiAgcmVhZG9ubHkgY3VzdG9tQXR0cmlidXRlcz86IHsgW2tleTogc3RyaW5nXTogY29nbml0by5JQ3VzdG9tQXR0cmlidXRlIH07XG4gIC8qKiBFbmFibGUgdGhlIENVU1RPTV9BVVRIIGZsb3cgb24gYXBwIGNsaWVudHMuIEBkZWZhdWx0IGZhbHNlICovXG4gIHJlYWRvbmx5IGVuYWJsZUN1c3RvbUF1dGhGbG93PzogYm9vbGVhbjtcbiAgLyoqIEFjY2VzcyB0b2tlbiB2YWxpZGl0eS4gQGRlZmF1bHQgMSBob3VyICovXG4gIHJlYWRvbmx5IGFjY2Vzc1Rva2VuVmFsaWRpdHk/OiBjb3JlLkR1cmF0aW9uO1xuICAvKiogSUQgdG9rZW4gdmFsaWRpdHkuIEBkZWZhdWx0IDEgaG91ciAqL1xuICByZWFkb25seSBpZFRva2VuVmFsaWRpdHk/OiBjb3JlLkR1cmF0aW9uO1xuICAvKiogUmVmcmVzaCB0b2tlbiB2YWxpZGl0eS4gQGRlZmF1bHQgMzAgZGF5cyAqL1xuICByZWFkb25seSByZWZyZXNoVG9rZW5WYWxpZGl0eT86IGNvcmUuRHVyYXRpb247XG4gIC8qKiBDb2duaXRvIGdyb3VwcyB0byBjcmVhdGUuICovXG4gIHJlYWRvbmx5IGdyb3Vwcz86IHN0cmluZ1tdO1xuICAvKipcbiAgICogUHJlLXRva2VuLWdlbmVyYXRpb24gTGFtYmRhIChWMikuIEBkZWZhdWx0IGEgYnVuZGxlZCBuby1vcCBsaWJyYXJ5IExhbWJkYSBpc1xuICAgKiBjcmVhdGVkLiBQYXNzIHlvdXIgb3duIHRvIGN1c3RvbWlzZSBlbWl0dGVkIGNsYWltcy5cbiAgICovXG4gIHJlYWRvbmx5IHByZVRva2VuR2VuZXJhdGlvbkxhbWJkYT86IGxhbWJkYS5JRnVuY3Rpb247XG4gIC8qKlxuICAgKiBFbmFibGUgZW1haWwgb25lLXRpbWUtcGFzc3dvcmQgKGBFTUFJTF9PVFBgKSBhcyB0aGUgTUZBIHNlY29uZCBmYWN0b3IsIGRlbGl2ZXJlZFxuICAgKiBieSB7QGxpbmsgY3VzdG9tRW1haWxTZW5kZXJMYW1iZGF9LiBUaGlzIGlzIHNldCB2aWEgYW4gTDEgb3ZlcnJpZGUgb24gdGhlXG4gICAqIHVuZGVybHlpbmcgYENmblVzZXJQb29sYCAoYEVuYWJsZWRNZmFzOiBbJ0VNQUlMX09UUCddYCkgcmF0aGVyIHRoYW5cbiAgICogYG1mYVNlY29uZEZhY3Rvci5lbWFpbGAsIGJlY2F1c2UgdGhlIENESyBMMiByZXF1aXJlcyBhIG1hbmFnZWQgKGBERVZFTE9QRVJgKSBTRVNcbiAgICogYGVtYWlsYCBjb25maWcgZm9yIGBtZmFTZWNvbmRGYWN0b3IuZW1haWxgIOKAlCB3aGljaCBpcyBpbmNvbXBhdGlibGUgd2l0aCBhXG4gICAqIGN1c3RvbS1lbWFpbC1zZW5kZXItb25seSBkZWxpdmVyeSBwYXRoLiBSZXF1aXJlcyB7QGxpbmsgY3VzdG9tRW1haWxTZW5kZXJMYW1iZGF9XG4gICAqIGFuZCB7QGxpbmsgY3VzdG9tU2VuZGVyS21zS2V5fSwgYW5kIGEgcG9vbCBmZWF0dXJlIHBsYW4gb2YgRXNzZW50aWFscyBvciBoaWdoZXIuXG4gICAqIFdoZW4gdHJ1ZSwgYW55IGBvdHBgL2BzbXNgIGluIHtAbGluayBtZmFTZWNvbmRGYWN0b3J9IGlzIGlnbm9yZWQg4oCUIEVNQUlMX09UUCBpc1xuICAgKiB0aGUgc29sZSBmYWN0b3IuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBlbWFpbE90cE1mYT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDdXN0b20gRW1haWwgU2VuZGVyIExhbWJkYS4gV2hlbiBzZXQgKHRvZ2V0aGVyIHdpdGgge0BsaW5rIGN1c3RvbVNlbmRlckttc0tleX0pLFxuICAgKiBpdCBpcyB3aXJlZCB0byB0aGUgcG9vbCB2aWEgdGhlIGBDVVNUT01fRU1BSUxfU0VOREVSYCB0cmlnZ2VyIGFuZCBDb2duaXRvXG4gICAqIGRlbGl2ZXJzIGFsbCBjdXN0b21lciBlbWFpbHMgKE1GQSBjb2RlcywgdmVyaWZpY2F0aW9uLCB0ZW1wb3JhcnkgcGFzc3dvcmRzKVxuICAgKiB0aHJvdWdoIHRoaXMgTGFtYmRhIGluc3RlYWQgb2YgaXRzIGRlZmF1bHQgc2VuZGVyIG9yIGEgbWFuYWdlZCBTRVMgc2VuZGVyLlxuICAgKiBDb2duaXRvIGVuY3J5cHRzIGVhY2ggY29kZSB0byB7QGxpbmsgY3VzdG9tU2VuZGVyS21zS2V5fTsgdGhlIExhbWJkYSBkZWNyeXB0c1xuICAgKiBpdCB3aXRoIHRoZSBBV1MgRW5jcnlwdGlvbiBTREsgYmVmb3JlIHNlbmRpbmcuIFJlcXVpcmVzIHtAbGluayBjdXN0b21TZW5kZXJLbXNLZXl9LlxuICAgKiBAZGVmYXVsdCAtIENvZ25pdG8ncyBkZWZhdWx0IGVtYWlsIGRlbGl2ZXJ5XG4gICAqL1xuICByZWFkb25seSBjdXN0b21FbWFpbFNlbmRlckxhbWJkYT86IGxhbWJkYS5JRnVuY3Rpb247XG4gIC8qKlxuICAgKiBTeW1tZXRyaWMgS01TIGtleSBDb2duaXRvIHVzZXMgdG8gZW5jcnlwdCBjb2RlcyBmb3Ige0BsaW5rIGN1c3RvbUVtYWlsU2VuZGVyTGFtYmRhfS5cbiAgICogUmVxdWlyZWQgd2hlbiBhIGN1c3RvbSBlbWFpbCBzZW5kZXIgaXMgcHJvdmlkZWQ7IGlnbm9yZWQgb3RoZXJ3aXNlLiBDb2duaXRvIGlzXG4gICAqIGdyYW50ZWQgZW5jcnlwdC9kZWNyeXB0IG9uIGl0OyB0aGUgTGFtYmRhIG11c3QgYmUgc2VwYXJhdGVseSBncmFudGVkIGRlY3J5cHQuXG4gICAqIEBkZWZhdWx0IC0gbm8ga2V5IChvbmx5IHZhbGlkIHdoZW4gbm8gY3VzdG9tIGVtYWlsIHNlbmRlciBpcyBzZXQpXG4gICAqL1xuICByZWFkb25seSBjdXN0b21TZW5kZXJLbXNLZXk/OiBrbXMuSUtleTtcbiAgLyoqXG4gICAqIEwxIGFjY291bnQtdGFrZW92ZXIgcmlzayBjb25maWd1cmF0aW9uIChyZXF1aXJlcyB7QGxpbmsgYWR2YW5jZWRTZWN1cml0eU1vZGV9XG4gICAqIEVORk9SQ0VEL0FVRElUKS4gUGFzc2VkIHRocm91Z2ggdG8gQ2ZuVXNlclBvb2xSaXNrQ29uZmlndXJhdGlvbkF0dGFjaG1lbnQuXG4gICAqL1xuICByZWFkb25seSBhY2NvdW50VGFrZW92ZXJSaXNrQ29uZmlndXJhdGlvbj86IEFjY291bnRUYWtlb3ZlclJpc2tDb25maWc7XG4gIC8qKiBMMSBjb21wcm9taXNlZC1jcmVkZW50aWFscyByaXNrIGNvbmZpZ3VyYXRpb24uICovXG4gIHJlYWRvbmx5IGNvbXByb21pc2VkQ3JlZGVudGlhbHNSaXNrQ29uZmlndXJhdGlvbj86IENvbXByb21pc2VkQ3JlZGVudGlhbHNSaXNrQ29uZmlnO1xuICAvKiogT3B0aW9uYWwgaWRlbnRpdHkgcG9vbCArIEFCQUMgY29uZmlndXJhdGlvbi4gKi9cbiAgcmVhZG9ubHkgaWRlbnRpdHlQb29sPzogQ29nbml0b0lkZW50aXR5UG9vbEFiYWNDb25maWc7XG4gIC8qKiBSZW1vdmFsIHBvbGljeSBmb3IgdGhlIHBvb2wuIEBkZWZhdWx0IFJFVEFJTiAqL1xuICByZWFkb25seSByZW1vdmFsUG9saWN5PzogY29yZS5SZW1vdmFsUG9saWN5O1xufVxuXG4vKipcbiAqIEEgZ2VuZXJpYywgcmV1c2FibGUgc2VjdXJlIENvZ25pdG8gKipjdXN0b21lcioqIHVzZXIgcG9vbCBmb3IgdGhlIGN1c3RvbS1VSVxuICogKGNsaWVudC1zaWRlIFNSUCkgYXV0aGVudGljYXRpb24gcGF0dGVybjogcHVibGljIFBLQ0UgYXBwIGNsaWVudHMsIE1GQSxcbiAqIHN0cm9uZyBwYXNzd29yZCBwb2xpY3ksIG9wdGlvbmFsIGFkdmFuY2VkLXNlY3VyaXR5IHRocmVhdCBwcm90ZWN0aW9uLFxuICogcGVyLWNsaWVudCAocGVyLWJyYW5kKSBhcHAgY2xpZW50cywgYW5kIGFuIG9wdGlvbmFsIGlkZW50aXR5IHBvb2wgd2l0aCBBQkFDLlxuICpcbiAqIFByb3Zpc2lvbnMgT05MWSB0aGUgaWRlbnRpdHkgcHJvdmlkZXIuIEl0IGtub3dzIG5vdGhpbmcgYWJvdXQgQ2xvdWRGcm9udCxcbiAqIHNlc3Npb25zLCBvciBhbnkgc3BlY2lmaWMgcHJvamVjdCDigJQgcGFpciBpdCB3aXRoIGBDb2duaXRvU2Vzc2lvbkJhY2tlbmRgXG4gKiAoc2Vzc2lvbiBzdWJzdHJhdGUpIGFuZCBgQ29nbml0b0N1c3RvbVVpQXV0aGAgKGVkZ2UvQ0ROKS5cbiAqL1xuZXhwb3J0IGNsYXNzIENvZ25pdG9DdXN0b21lclBvb2wgZXh0ZW5kcyBjb25zdHJ1Y3RzLkNvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSB1c2VyUG9vbDogY29nbml0by5Vc2VyUG9vbDtcbiAgLyoqIEFwcCBjbGllbnRzIGtleWVkIGJ5IHtAbGluayBDb2duaXRvQXBwQ2xpZW50U3BlYy5rZXl9LiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdXNlclBvb2xDbGllbnRzOiBSZWNvcmQ8c3RyaW5nLCBjb2duaXRvLlVzZXJQb29sQ2xpZW50PjtcbiAgLyoqIFRoZSBmaXJzdCBhcHAgY2xpZW50LCBmb3IgY29udmVuaWVuY2UuICovXG4gIHB1YmxpYyByZWFkb25seSB1c2VyUG9vbENsaWVudDogY29nbml0by5Vc2VyUG9vbENsaWVudDtcbiAgcHVibGljIHJlYWRvbmx5IHVzZXJQb29sRG9tYWluOiBjb2duaXRvLlVzZXJQb29sRG9tYWluO1xuICAvKiogSG9zdGVkLVVJIGRvbWFpbiBVUkwsIGUuZy4gYDxwcmVmaXg+LmF1dGguPHJlZ2lvbj4uYW1hem9uY29nbml0by5jb21gLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY29nbml0b0RvbWFpblVybDogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgaWRlbnRpdHlQb29sPzogY29nbml0by5DZm5JZGVudGl0eVBvb2w7XG4gIHB1YmxpYyByZWFkb25seSBhdXRoZW50aWNhdGVkUm9sZT86IGlhbS5Sb2xlO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IENvZ25pdG9DdXN0b21lclBvb2xQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBpZiAoIXByb3BzLmFwcENsaWVudHMgfHwgcHJvcHMuYXBwQ2xpZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ29nbml0b0N1c3RvbWVyUG9vbCByZXF1aXJlcyBhdCBsZWFzdCBvbmUgYXBwIGNsaWVudCcpO1xuICAgIH1cblxuICAgIGlmICgocHJvcHMuY3VzdG9tRW1haWxTZW5kZXJMYW1iZGEgPT09IHVuZGVmaW5lZCkgIT09IChwcm9wcy5jdXN0b21TZW5kZXJLbXNLZXkgPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0NvZ25pdG9DdXN0b21lclBvb2w6IGN1c3RvbUVtYWlsU2VuZGVyTGFtYmRhIGFuZCBjdXN0b21TZW5kZXJLbXNLZXkgbXVzdCBiZSBwcm92aWRlZCB0b2dldGhlciDigJQgJ1xuICAgICAgICArICdhIGN1c3RvbSBlbWFpbCBzZW5kZXIgcmVxdWlyZXMgYSBLTVMga2V5IGZvciBDb2duaXRvIHRvIGVuY3J5cHQgY29kZXMgdG8sIGFuZCB0aGUga2V5IGlzIHVudXNlZCB3aXRob3V0IHRoZSBMYW1iZGEuJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLmVtYWlsT3RwTWZhICYmICFwcm9wcy5jdXN0b21FbWFpbFNlbmRlckxhbWJkYSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnQ29nbml0b0N1c3RvbWVyUG9vbDogZW1haWxPdHBNZmEgcmVxdWlyZXMgY3VzdG9tRW1haWxTZW5kZXJMYW1iZGEgKGFuZCBjdXN0b21TZW5kZXJLbXNLZXkpIOKAlCAnXG4gICAgICAgICsgJ0VNQUlMX09UUCBjb2RlcyBhcmUgZGVsaXZlcmVkIGJ5IHRoZSBjdXN0b20gZW1haWwgc2VuZGVyLCBzbyBlbWFpbCBNRkEgY2Fubm90IGJlIGVuYWJsZWQgd2l0aG91dCBpdC4nLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBXaXRoIGVtYWlsT3RwTWZhLCBFTUFJTF9PVFAgaXMgdGhlIHNvbGUgZmFjdG9yIGFuZCBpcyBhcHBsaWVkIHZpYSBhbiBMMVxuICAgIC8vIG92ZXJyaWRlIGJlbG93OyBkbyBOT1QgcGFzcyBtZmFTZWNvbmRGYWN0b3IuZW1haWwgdG8gdGhlIEwyIChpdHMgdmFsaWRhdGVFbWFpbE1mYVxuICAgIC8vIGRlbWFuZHMgYSBtYW5hZ2VkIERFVkVMT1BFUiBTRVMgY29uZmlnLCB3aGljaCB0aGUgY3VzdG9tLXNlbmRlciBwYXRoIGF2b2lkcykuXG4gICAgY29uc3QgbDJNZmFTZWNvbmRGYWN0b3IgPSBwcm9wcy5lbWFpbE90cE1mYVxuICAgICAgPyB7IG90cDogZmFsc2UsIHNtczogZmFsc2UgfVxuICAgICAgOiAocHJvcHMubWZhU2Vjb25kRmFjdG9yID8/IHsgb3RwOiB0cnVlLCBzbXM6IGZhbHNlIH0pO1xuXG4gICAgLy8gQWNjb3VudCByZWNvdmVyeSBtdXN0IG5vdCBiZSBlbWFpbC1vbmx5IHdoZW4gRU1BSUxfT1RQIE1GQSBpcyBlbmFibGVkOlxuICAgIC8vIENvZ25pdG8gcmVqZWN0cyBFbWFpbE1mYUNvbmZpZ3VyYXRpb24gdW5sZXNzIEFjY291bnRSZWNvdmVyeVNldHRpbmcgaGFzIGF0XG4gICAgLy8gbGVhc3Qgb25lIG1lY2hhbmlzbSBvdGhlciB0aGFuIHZlcmlmaWVkX2VtYWlsIChyZWNvdmVyaW5nIGVtYWlsLWJhc2VkIE1GQSB2aWFcbiAgICAvLyBlbWFpbCBpcyBjaXJjdWxhcikuIEFjY291bnRSZWNvdmVyeS5OT05FIG1hcHMgdG8gdGhlIGFkbWluX29ubHkgbWVjaGFuaXNtLCB3aGljaFxuICAgIC8vIHNhdGlzZmllcyB0aGUgY29uc3RyYWludCB3aXRob3V0IGludHJvZHVjaW5nIGFuIFNNUy9waG9uZSBmYWN0b3IgaW50byB0aGlzXG4gICAgLy8gcGFzc3dvcmRsZXNzLWVtYWlsIGRlc2lnbi4gT3RoZXJ3aXNlIGtlZXAgdGhlIGVtYWlsLW9ubHkgZGVmYXVsdC5cbiAgICBjb25zdCBhY2NvdW50UmVjb3ZlcnkgPSBwcm9wcy5lbWFpbE90cE1mYVxuICAgICAgPyBjb2duaXRvLkFjY291bnRSZWNvdmVyeS5OT05FXG4gICAgICA6IGNvZ25pdG8uQWNjb3VudFJlY292ZXJ5LkVNQUlMX09OTFk7XG5cbiAgICB0aGlzLnVzZXJQb29sID0gbmV3IGNvZ25pdG8uVXNlclBvb2wodGhpcywgJ1VzZXJQb29sJywge1xuICAgICAgdXNlclBvb2xOYW1lOiBwcm9wcy51c2VyUG9vbE5hbWUsXG4gICAgICBzZWxmU2lnblVwRW5hYmxlZDogcHJvcHMuc2VsZlNpZ25VcEVuYWJsZWQgPz8gZmFsc2UsXG4gICAgICBzaWduSW5BbGlhc2VzOiB7IGVtYWlsOiB0cnVlIH0sXG4gICAgICBzaWduSW5DYXNlU2Vuc2l0aXZlOiBmYWxzZSxcbiAgICAgIG1mYTogcHJvcHMubWZhID8/IGNvZ25pdG8uTWZhLlJFUVVJUkVELFxuICAgICAgbWZhU2Vjb25kRmFjdG9yOiBsMk1mYVNlY29uZEZhY3RvcixcbiAgICAgIHBhc3N3b3JkUG9saWN5OiBwcm9wcy5wYXNzd29yZFBvbGljeSA/PyB7XG4gICAgICAgIG1pbkxlbmd0aDogMTIsXG4gICAgICAgIHJlcXVpcmVMb3dlcmNhc2U6IHRydWUsXG4gICAgICAgIHJlcXVpcmVVcHBlcmNhc2U6IHRydWUsXG4gICAgICAgIHJlcXVpcmVEaWdpdHM6IHRydWUsXG4gICAgICAgIHJlcXVpcmVTeW1ib2xzOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIGFkdmFuY2VkU2VjdXJpdHlNb2RlOiBwcm9wcy5hZHZhbmNlZFNlY3VyaXR5TW9kZSA/PyBjb2duaXRvLkFkdmFuY2VkU2VjdXJpdHlNb2RlLk9GRixcbiAgICAgIHN0YW5kYXJkQXR0cmlidXRlczogcHJvcHMuc3RhbmRhcmRBdHRyaWJ1dGVzLFxuICAgICAgY3VzdG9tQXR0cmlidXRlczogcHJvcHMuY3VzdG9tQXR0cmlidXRlcyxcbiAgICAgIGF1dG9WZXJpZnk6IHsgZW1haWw6IHRydWUgfSxcbiAgICAgIGFjY291bnRSZWNvdmVyeSxcbiAgICAgIC8vIEN1c3RvbSBFbWFpbCBTZW5kZXI6IHdoZW4gcHJvdmlkZWQsIENvZ25pdG8gcm91dGVzIGV2ZXJ5IGN1c3RvbWVyIGVtYWlsXG4gICAgICAvLyB0aHJvdWdoIHRoaXMgTGFtYmRhIGFuZCBlbmNyeXB0cyBjb2RlcyB0byBjdXN0b21TZW5kZXJLbXNLZXkuIEJvdGggbXVzdCBiZVxuICAgICAgLy8gc2V0IG9uIHRoZSBwb29sIGF0IGNvbnN0cnVjdGlvbiDigJQgdGhlIEtNUyBrZXkgaXMgbm90IHNldHRhYmxlIHZpYSBhZGRUcmlnZ2VyLlxuICAgICAgY3VzdG9tU2VuZGVyS21zS2V5OiBwcm9wcy5jdXN0b21TZW5kZXJLbXNLZXksXG4gICAgICBsYW1iZGFUcmlnZ2VyczogcHJvcHMuY3VzdG9tRW1haWxTZW5kZXJMYW1iZGFcbiAgICAgICAgPyB7IGN1c3RvbUVtYWlsU2VuZGVyOiBwcm9wcy5jdXN0b21FbWFpbFNlbmRlckxhbWJkYSB9XG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgcmVtb3ZhbFBvbGljeTogcHJvcHMucmVtb3ZhbFBvbGljeSA/PyBjb3JlLlJlbW92YWxQb2xpY3kuUkVUQUlOLFxuICAgIH0pO1xuXG4gICAgLy8gTDEgZXNjYXBlIGhhdGNoOiBlbmFibGUgRU1BSUxfT1RQIGFzIHRoZSBvbmx5IE1GQSBmYWN0b3IuIFRoZSBMMiBjYW5ub3QgZXhwcmVzc1xuICAgIC8vIFwiZW1haWwgTUZBIGRlbGl2ZXJlZCBzb2xlbHkgYnkgYSBjdXN0b20gc2VuZGVyXCIgKHNlZSBlbWFpbE90cE1mYSBkb2NzKSwgc28gc2V0XG4gICAgLy8gRW5hYmxlZE1mYXMgZGlyZWN0bHkgb24gdGhlIHVuZGVybHlpbmcgQ2ZuVXNlclBvb2wuIFRoZSBjdXN0b20gZW1haWwgc2VuZGVyXG4gICAgLy8gZGVsaXZlcnMgdGhlIGNvZGU7IG5vIG1hbmFnZWQgU0VTIGVtYWlsIGNvbmZpZ3VyYXRpb24gaXMgcmVxdWlyZWQuXG4gICAgaWYgKHByb3BzLmVtYWlsT3RwTWZhKSB7XG4gICAgICBjb25zdCBjZm5Qb29sID0gdGhpcy51c2VyUG9vbC5ub2RlLmRlZmF1bHRDaGlsZCBhcyBjb2duaXRvLkNmblVzZXJQb29sO1xuICAgICAgY2ZuUG9vbC5lbmFibGVkTWZhcyA9IFsnRU1BSUxfT1RQJ107XG4gICAgfVxuXG4gICAgY29uc3QgcHJlVG9rZW5MYW1iZGEgPSBwcm9wcy5wcmVUb2tlbkdlbmVyYXRpb25MYW1iZGEgPz8gbmV3IGxhbWJkYS5GdW5jdGlvbih0aGlzLCAnUHJlVG9rZW5MYW1iZGEnLCB7XG4gICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5QWVRIT05fM18xMixcbiAgICAgIGhhbmRsZXI6ICdpbmRleC5oYW5kbGVyJyxcbiAgICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vbGFtYmRhL3ByZS10b2tlbicpKSxcbiAgICAgIHRpbWVvdXQ6IGNvcmUuRHVyYXRpb24uc2Vjb25kcyg1KSxcbiAgICB9KTtcbiAgICB0aGlzLnVzZXJQb29sLmFkZFRyaWdnZXIoY29nbml0by5Vc2VyUG9vbE9wZXJhdGlvbi5QUkVfVE9LRU5fR0VORVJBVElPTl9DT05GSUcsIHByZVRva2VuTGFtYmRhLCBjb2duaXRvLkxhbWJkYVZlcnNpb24uVjJfMCk7XG5cbiAgICBpZiAocHJvcHMuZ3JvdXBzKSB7XG4gICAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIHByb3BzLmdyb3Vwcykge1xuICAgICAgICBuZXcgY29nbml0by5DZm5Vc2VyUG9vbEdyb3VwKHRoaXMsIGBHcm91cCR7Z3JvdXB9YCwge1xuICAgICAgICAgIHVzZXJQb29sSWQ6IHRoaXMudXNlclBvb2wudXNlclBvb2xJZCxcbiAgICAgICAgICBncm91cE5hbWU6IGdyb3VwLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBPcHRpb25hbCBhZHZhbmNlZC1zZWN1cml0eSByaXNrIGNvbmZpZ3VyYXRpb24gKEwxKS5cbiAgICBpZiAocHJvcHMuYWNjb3VudFRha2VvdmVyUmlza0NvbmZpZ3VyYXRpb24gfHwgcHJvcHMuY29tcHJvbWlzZWRDcmVkZW50aWFsc1Jpc2tDb25maWd1cmF0aW9uKSB7XG4gICAgICBuZXcgY29nbml0by5DZm5Vc2VyUG9vbFJpc2tDb25maWd1cmF0aW9uQXR0YWNobWVudCh0aGlzLCAnUmlza0NvbmZpZycsIHtcbiAgICAgICAgdXNlclBvb2xJZDogdGhpcy51c2VyUG9vbC51c2VyUG9vbElkLFxuICAgICAgICBjbGllbnRJZDogJ0FMTCcsXG4gICAgICAgIGFjY291bnRUYWtlb3ZlclJpc2tDb25maWd1cmF0aW9uOiBwcm9wcy5hY2NvdW50VGFrZW92ZXJSaXNrQ29uZmlndXJhdGlvbixcbiAgICAgICAgY29tcHJvbWlzZWRDcmVkZW50aWFsc1Jpc2tDb25maWd1cmF0aW9uOiBwcm9wcy5jb21wcm9taXNlZENyZWRlbnRpYWxzUmlza0NvbmZpZ3VyYXRpb24sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnVzZXJQb29sQ2xpZW50cyA9IHt9O1xuICAgIGZvciAoY29uc3Qgc3BlYyBvZiBwcm9wcy5hcHBDbGllbnRzKSB7XG4gICAgICBjb25zdCBjbGllbnQgPSBuZXcgY29nbml0by5Vc2VyUG9vbENsaWVudCh0aGlzLCBgQ2xpZW50JHtzcGVjLmtleX1gLCB7XG4gICAgICAgIHVzZXJQb29sOiB0aGlzLnVzZXJQb29sLFxuICAgICAgICBnZW5lcmF0ZVNlY3JldDogc3BlYy5nZW5lcmF0ZVNlY3JldCA/PyBmYWxzZSxcbiAgICAgICAgYXV0aEZsb3dzOiB7XG4gICAgICAgICAgdXNlclNycDogdHJ1ZSxcbiAgICAgICAgICBjdXN0b206IHByb3BzLmVuYWJsZUN1c3RvbUF1dGhGbG93ID8/IGZhbHNlLFxuICAgICAgICAgIC8vIHVzZXJQYXNzd29yZCAvIGFkbWluVXNlclBhc3N3b3JkIGludGVudGlvbmFsbHkgb21pdHRlZCAoZGlzYWJsZWQpLlxuICAgICAgICB9LFxuICAgICAgICBvQXV0aDoge1xuICAgICAgICAgIGZsb3dzOiB7IGF1dGhvcml6YXRpb25Db2RlR3JhbnQ6IHRydWUgfSxcbiAgICAgICAgICBzY29wZXM6IFtjb2duaXRvLk9BdXRoU2NvcGUuT1BFTklELCBjb2duaXRvLk9BdXRoU2NvcGUuRU1BSUwsIGNvZ25pdG8uT0F1dGhTY29wZS5QUk9GSUxFXSxcbiAgICAgICAgICBjYWxsYmFja1VybHM6IHNwZWMuY2FsbGJhY2tVcmxzLFxuICAgICAgICAgIGxvZ291dFVybHM6IHNwZWMubG9nb3V0VXJscyxcbiAgICAgICAgfSxcbiAgICAgICAgc3VwcG9ydGVkSWRlbnRpdHlQcm92aWRlcnM6IHNwZWMuc3VwcG9ydGVkSWRlbnRpdHlQcm92aWRlcnMgPz8gW2NvZ25pdG8uVXNlclBvb2xDbGllbnRJZGVudGl0eVByb3ZpZGVyLkNPR05JVE9dLFxuICAgICAgICBwcmV2ZW50VXNlckV4aXN0ZW5jZUVycm9yczogdHJ1ZSxcbiAgICAgICAgZW5hYmxlVG9rZW5SZXZvY2F0aW9uOiB0cnVlLFxuICAgICAgICBhY2Nlc3NUb2tlblZhbGlkaXR5OiBwcm9wcy5hY2Nlc3NUb2tlblZhbGlkaXR5ID8/IGNvcmUuRHVyYXRpb24uaG91cnMoMSksXG4gICAgICAgIGlkVG9rZW5WYWxpZGl0eTogcHJvcHMuaWRUb2tlblZhbGlkaXR5ID8/IGNvcmUuRHVyYXRpb24uaG91cnMoMSksXG4gICAgICAgIHJlZnJlc2hUb2tlblZhbGlkaXR5OiBwcm9wcy5yZWZyZXNoVG9rZW5WYWxpZGl0eSA/PyBjb3JlLkR1cmF0aW9uLmRheXMoMzApLFxuICAgICAgfSk7XG4gICAgICB0aGlzLnVzZXJQb29sQ2xpZW50c1tzcGVjLmtleV0gPSBjbGllbnQ7XG4gICAgfVxuICAgIHRoaXMudXNlclBvb2xDbGllbnQgPSB0aGlzLnVzZXJQb29sQ2xpZW50c1twcm9wcy5hcHBDbGllbnRzWzBdLmtleV07XG5cbiAgICB0aGlzLnVzZXJQb29sRG9tYWluID0gdGhpcy51c2VyUG9vbC5hZGREb21haW4oJ0NvZ25pdG9Eb21haW4nLCB7XG4gICAgICBjb2duaXRvRG9tYWluOiB7IGRvbWFpblByZWZpeDogcHJvcHMuY29nbml0b0RvbWFpblByZWZpeCB9LFxuICAgIH0pO1xuICAgIHRoaXMuY29nbml0b0RvbWFpblVybCA9IGAke3Byb3BzLmNvZ25pdG9Eb21haW5QcmVmaXh9LmF1dGguJHtjb3JlLlN0YWNrLm9mKHRoaXMpLnJlZ2lvbn0uYW1hem9uY29nbml0by5jb21gO1xuXG4gICAgaWYgKHByb3BzLmlkZW50aXR5UG9vbCkge1xuICAgICAgY29uc3QgaWRwID0gcHJvcHMuaWRlbnRpdHlQb29sO1xuICAgICAgdGhpcy5pZGVudGl0eVBvb2wgPSBuZXcgY29nbml0by5DZm5JZGVudGl0eVBvb2wodGhpcywgJ0lkZW50aXR5UG9vbCcsIHtcbiAgICAgICAgYWxsb3dVbmF1dGhlbnRpY2F0ZWRJZGVudGl0aWVzOiBpZHAuYWxsb3dVbmF1dGhlbnRpY2F0ZWRJZGVudGl0aWVzID8/IGZhbHNlLFxuICAgICAgICBjb2duaXRvSWRlbnRpdHlQcm92aWRlcnM6IHByb3BzLmFwcENsaWVudHMubWFwKHNwZWMgPT4gKHtcbiAgICAgICAgICBjbGllbnRJZDogdGhpcy51c2VyUG9vbENsaWVudHNbc3BlYy5rZXldLnVzZXJQb29sQ2xpZW50SWQsXG4gICAgICAgICAgcHJvdmlkZXJOYW1lOiB0aGlzLnVzZXJQb29sLnVzZXJQb29sUHJvdmlkZXJOYW1lLFxuICAgICAgICAgIHNlcnZlclNpZGVUb2tlbkNoZWNrOiB0cnVlLFxuICAgICAgICB9KSksXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5hdXRoZW50aWNhdGVkUm9sZSA9IG5ldyBpYW0uUm9sZSh0aGlzLCAnQXV0aGVudGljYXRlZFJvbGUnLCB7XG4gICAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5GZWRlcmF0ZWRQcmluY2lwYWwoXG4gICAgICAgICAgJ2NvZ25pdG8taWRlbnRpdHkuYW1hem9uYXdzLmNvbScsXG4gICAgICAgICAge1xuICAgICAgICAgICAgJ1N0cmluZ0VxdWFscyc6IHsgJ2NvZ25pdG8taWRlbnRpdHkuYW1hem9uYXdzLmNvbTphdWQnOiB0aGlzLmlkZW50aXR5UG9vbC5yZWYgfSxcbiAgICAgICAgICAgICdGb3JBbnlWYWx1ZTpTdHJpbmdMaWtlJzogeyAnY29nbml0by1pZGVudGl0eS5hbWF6b25hd3MuY29tOmFtcic6ICdhdXRoZW50aWNhdGVkJyB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgJ3N0czpBc3N1bWVSb2xlV2l0aFdlYklkZW50aXR5JyxcbiAgICAgICAgKSxcbiAgICAgICAgbWFuYWdlZFBvbGljaWVzOiBpZHAuYXV0aGVudGljYXRlZFJvbGVNYW5hZ2VkUG9saWNpZXMsXG4gICAgICB9KTtcblxuICAgICAgbmV3IGNvZ25pdG8uQ2ZuSWRlbnRpdHlQb29sUm9sZUF0dGFjaG1lbnQodGhpcywgJ0lkZW50aXR5UG9vbFJvbGVzJywge1xuICAgICAgICBpZGVudGl0eVBvb2xJZDogdGhpcy5pZGVudGl0eVBvb2wucmVmLFxuICAgICAgICByb2xlczogeyBhdXRoZW50aWNhdGVkOiB0aGlzLmF1dGhlbnRpY2F0ZWRSb2xlLnJvbGVBcm4gfSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBBQkFDOiBtYXAgY2xhaW1zIHRvIHByaW5jaXBhbCB0YWdzIG9uIHRoZSB1c2VyLXBvb2wgcHJvdmlkZXIuXG4gICAgICBpZiAoaWRwLnByaW5jaXBhbFRhZ3MgJiYgT2JqZWN0LmtleXMoaWRwLnByaW5jaXBhbFRhZ3MpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgbmV3IGNvZ25pdG8uQ2ZuSWRlbnRpdHlQb29sUHJpbmNpcGFsVGFnKHRoaXMsICdQcmluY2lwYWxUYWdzJywge1xuICAgICAgICAgIGlkZW50aXR5UG9vbElkOiB0aGlzLmlkZW50aXR5UG9vbC5yZWYsXG4gICAgICAgICAgaWRlbnRpdHlQcm92aWRlck5hbWU6IHRoaXMudXNlclBvb2wudXNlclBvb2xQcm92aWRlck5hbWUsXG4gICAgICAgICAgdXNlRGVmYXVsdHM6IGZhbHNlLFxuICAgICAgICAgIHByaW5jaXBhbFRhZ3M6IGlkcC5wcmluY2lwYWxUYWdzLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
263
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29nbml0b0N1c3RvbWVyUG9vbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbG91ZGZyb250L3BhdHRlcm5zL2NvZ25pdG9DdXN0b21lclBvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQTZCO0FBQzdCLGtEQUFvQztBQUNwQyw2Q0FLcUI7QUFDckIsdURBQXlDO0FBd0x6Qzs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFhLG1CQUFvQixTQUFRLFVBQVUsQ0FBQyxTQUFTO0lBWTNELFlBQVksS0FBMkIsRUFBRSxFQUFVLEVBQUUsS0FBK0I7UUFDbEYsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN2RCxNQUFNLElBQUksS0FBSyxDQUFDLHNEQUFzRCxDQUFDLENBQUM7UUFDMUUsQ0FBQztRQUVELElBQUksQ0FBQyxLQUFLLENBQUMsdUJBQXVCLEtBQUssU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEtBQUssU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUMvRixNQUFNLElBQUksS0FBSyxDQUNiLGtHQUFrRztrQkFDaEcscUhBQXFILENBQ3hILENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxLQUFLLENBQUMsV0FBVyxJQUFJLENBQUMsS0FBSyxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDeEQsTUFBTSxJQUFJLEtBQUssQ0FDYiwrRkFBK0Y7a0JBQzdGLHNHQUFzRyxDQUN6RyxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksS0FBSyxDQUFDLFdBQVcsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQ25ELE1BQU0sSUFBSSxLQUFLLENBQ2IsaUVB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QWlCLENBQUMsT0FBTyxFQUFFO2FBQ3pELENBQUMsQ0FBQztZQUVILGdFQUFnRTtZQUNoRSxJQUFJLEdBQUcsQ0FBQyxhQUFhLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNuRSxJQUFJLHlCQUFPLENBQUMsMkJBQTJCLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRTtvQkFDN0QsY0FBYyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRztvQkFDckMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0I7b0JBQ3hELFdBQVcsRUFBRSxLQUFLO29CQUNsQixhQUFhLEVBQUUsR0FBRyxDQUFDLGFBQWE7aUJBQ2pDLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBalFELGtEQWlRQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBjb3JlIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7XG4gIGF3c19jb2duaXRvIGFzIGNvZ25pdG8sXG4gIGF3c19pYW0gYXMgaWFtLFxuICBhd3Nfa21zIGFzIGttcyxcbiAgYXdzX2xhbWJkYSBhcyBsYW1iZGEsXG59IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGNvbnN0cnVjdHMgZnJvbSAnY29uc3RydWN0cyc7XG5cbnR5cGUgQWNjb3VudFRha2VvdmVyUmlza0NvbmZpZyA9IGNvZ25pdG8uQ2ZuVXNlclBvb2xSaXNrQ29uZmlndXJhdGlvbkF0dGFjaG1lbnQuQWNjb3VudFRha2VvdmVyUmlza0NvbmZpZ3VyYXRpb25UeXBlUHJvcGVydHk7XG50eXBlIENvbXByb21pc2VkQ3JlZGVudGlhbHNSaXNrQ29uZmlnID0gY29nbml0by5DZm5Vc2VyUG9vbFJpc2tDb25maWd1cmF0aW9uQXR0YWNobWVudC5Db21wcm9taXNlZENyZWRlbnRpYWxzUmlza0NvbmZpZ3VyYXRpb25UeXBlUHJvcGVydHk7XG5cbi8qKlxuICogU3BlY2lmaWNhdGlvbiBmb3Igb25lIENvZ25pdG8gYXBwIGNsaWVudCAoZS5nLiBvbmUgYnJhbmQgb3Igb25lIGZyb250LWVuZCkuXG4gKiBQdWJsaWMgU1BBIGNsaWVudHM6IG5vIHNlY3JldCwgUEtDRSAoYXV0aG9yaXphdGlvbi1jb2RlIGdyYW50KSwgU1JQLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvZ25pdG9BcHBDbGllbnRTcGVjIHtcbiAgLyoqIExvZ2ljYWwga2V5IHVzZWQgYXMgdGhlIGNvbnN0cnVjdCBpZCBhbmQgdGhlIGtleSBpbiB7QGxpbmsgQ29nbml0b0N1c3RvbWVyUG9vbC51c2VyUG9vbENsaWVudHN9LiAqL1xuICByZWFkb25seSBrZXk6IHN0cmluZztcbiAgLyoqIE9BdXRoMiBjYWxsYmFjayBVUkxzIGZvciB0aGlzIGNsaWVudCAodXNlZCBvbmx5IGJ5IHRoZSBzb2NpYWwvaG9zdGVkIHJlZGlyZWN0IGZsb3cpLiAqL1xuICByZWFkb25seSBjYWxsYmFja1VybHM/OiBzdHJpbmdbXTtcbiAgLyoqIExvZ291dCBVUkxzIGZvciB0aGlzIGNsaWVudC4gKi9cbiAgcmVhZG9ubHkgbG9nb3V0VXJscz86IHN0cmluZ1tdO1xuICAvKiogSWRlbnRpdHkgcHJvdmlkZXJzIHRoaXMgY2xpZW50IHN1cHBvcnRzLiBAZGVmYXVsdCBbQ09HTklUT10gKi9cbiAgcmVhZG9ubHkgc3VwcG9ydGVkSWRlbnRpdHlQcm92aWRlcnM/OiBjb2duaXRvLlVzZXJQb29sQ2xpZW50SWRlbnRpdHlQcm92aWRlcltdO1xuICAvKiogR2VuZXJhdGUgYSBjbGllbnQgc2VjcmV0LiBAZGVmYXVsdCBmYWxzZSAocHVibGljIFNQQSBjbGllbnQpICovXG4gIHJlYWRvbmx5IGdlbmVyYXRlU2VjcmV0PzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBTYW1lLWFjY291bnQgU0VTIGVtYWlsIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBwb29sLiBTeW50aGVzaXNlcyBhblxuICogYEVtYWlsQ29uZmlndXJhdGlvbmAgd2l0aCBgRW1haWxTZW5kaW5nQWNjb3VudDogREVWRUxPUEVSYC4gSXRzIHB1cnBvc2UgaXMgdG9cbiAqIHNhdGlzZnkgQ29nbml0bydzIHByZWNvbmRpdGlvbiBmb3IgZW5hYmxpbmcgRU1BSUxfT1RQIE1GQSDigJQgQ29nbml0byByZXF1aXJlcyBhXG4gKiB2ZXJpZmllZCBzYW1lLWFjY291bnQgU0VTIGlkZW50aXR5IG9uIHRoZSBwb29sIGJlZm9yZSBpdCB3aWxsIGFjY2VwdFxuICogYEVuYWJsZWRNZmFzOiBbJ0VNQUlMX09UUCddYCwgaW5kZXBlbmRlbnRseSBvZiBhbnkgY3VzdG9tIGVtYWlsIHNlbmRlciB0aGF0XG4gKiBvdmVycmlkZXMgYWN0dWFsIGRlbGl2ZXJ5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvZ25pdG9DdXN0b21lclBvb2xFbWFpbENvbmZpZyB7XG4gIC8qKlxuICAgKiBBUk4gb2YgYSBWRVJJRklFRCBTRVMgaWRlbnRpdHkgaW4gdGhlIFBPT0wncyBPV04gYWNjb3VudCAoZG9tYWluIGlkZW50aXR5XG4gICAqIHByZWZlcnJlZDsgYSB2ZXJpZmllZCBlbWFpbC1hZGRyZXNzIGlkZW50aXR5IGFsc28gd29ya3MpLiBQYXNzZWQgdG8gQ29nbml0byBhc1xuICAgKiB0aGUgYEVtYWlsQ29uZmlndXJhdGlvbi5Tb3VyY2VBcm5gLiBNdXN0IGJlIGluIHRoZSBwb29sJ3MgcmVnaW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VzVmVyaWZpZWREb21haW5Bcm46IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBGcm9tIGFkZHJlc3MgZm9yIHRoZSBwb29sJ3MgU0VTIGNvbmZpZ3VyYXRpb24sIGUuZy5cbiAgICogYDJmYUBhbHBoYS5mdW5jdGlvbmFsc2VsZi5jb21gLiBBIGxvY2FsLXBhcnQgb24gdGhlIHZlcmlmaWVkIGlkZW50aXR5J3MgZG9tYWluLlxuICAgKi9cbiAgcmVhZG9ubHkgZnJvbUVtYWlsOiBzdHJpbmc7XG4gIC8qKiBPcHRpb25hbCBkaXNwbGF5IG5hbWUsIGUuZy4gXCJGdW5jdGlvbmFsIFNlbGZcIi4gQGRlZmF1bHQgLSBhZGRyZXNzIG9ubHkgKi9cbiAgcmVhZG9ubHkgZnJvbU5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9uYWwgQ29nbml0byBJZGVudGl0eSBQb29sICsgQUJBQyAoYXR0cmlidXRlcy1mb3ItYWNjZXNzLWNvbnRyb2wpIGNvbmZpZy5cbiAqIE1hcHMgdG9rZW4gY2xhaW1zIHRvIHByaW5jaXBhbCB0YWdzIHNvIGRvd25zdHJlYW0gSUFNIGNhbiBzY29wZSBvbiB0aGVtLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvZ25pdG9JZGVudGl0eVBvb2xBYmFjQ29uZmlnIHtcbiAgLyoqIEFsbG93IHVuYXV0aGVudGljYXRlZCAoZ3Vlc3QpIGlkZW50aXRpZXMuIEBkZWZhdWx0IGZhbHNlICovXG4gIHJlYWRvbmx5IGFsbG93VW5hdXRoZW50aWNhdGVkSWRlbnRpdGllcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDbGFpbSDihpIgcHJpbmNpcGFsLXRhZyBtYXBwaW5nLCBlLmcuIGB7IHN1YjogJ2N1c3RvbWVyLWlkJyB9YC4gQXBwbGllZCB0byB0aGVcbiAgICogdXNlci1wb29sIHByb3ZpZGVyIHNvIGF1dGhlbnRpY2F0ZWQgc2Vzc2lvbnMgY2FycnkgdGhlc2UgYXMgYGF3czpQcmluY2lwYWxUYWcvKmAuXG4gICAqL1xuICByZWFkb25seSBwcmluY2lwYWxUYWdzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgLyoqIE1hbmFnZWQgcG9saWNpZXMgZm9yIHRoZSBhdXRoZW50aWNhdGVkIHJvbGUuIEBkZWZhdWx0IG5vbmUgKGF0dGFjaCB5b3VyIG93bikuICovXG4gIHJlYWRvbmx5IGF1dGhlbnRpY2F0ZWRSb2xlTWFuYWdlZFBvbGljaWVzPzogaWFtLklNYW5hZ2VkUG9saWN5W107XG59XG5cbi8qKlxuICogUHJvcHMgZm9yIHtAbGluayBDb2duaXRvQ3VzdG9tZXJQb29sfS4gRXZlcnkgdmFsdWUgaXMgZ2VuZXJpYyDigJQgbm9cbiAqIHByb2plY3QvYnJhbmQvZG9tYWluIHNwZWNpZmljcyBhcmUgYmFrZWQgaW47IHBhc3MgdGhlbSBoZXJlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvZ25pdG9DdXN0b21lclBvb2xQcm9wcyB7XG4gIC8qKiBVc2VyIHBvb2wgbmFtZS4gKi9cbiAgcmVhZG9ubHkgdXNlclBvb2xOYW1lPzogc3RyaW5nO1xuICAvKiogQ29nbml0byBob3N0ZWQtVUkgZG9tYWluIHByZWZpeCAoZ2xvYmFsbHkgdW5pcXVlKS4gKi9cbiAgcmVhZG9ubHkgY29nbml0b0RvbWFpblByZWZpeDogc3RyaW5nO1xuICAvKiogQXBwIGNsaWVudHMgdG8gY3JlYXRlICh0eXBpY2FsbHkgb25lIHBlciBicmFuZC9mcm9udC1lbmQpLiBBdCBsZWFzdCBvbmUuICovXG4gIHJlYWRvbmx5IGFwcENsaWVudHM6IENvZ25pdG9BcHBDbGllbnRTcGVjW107XG4gIC8qKiBFbmFibGUgc2VsZi1zZXJ2aWNlIHNpZ24tdXAuIEBkZWZhdWx0IGZhbHNlICovXG4gIHJlYWRvbmx5IHNlbGZTaWduVXBFbmFibGVkPzogYm9vbGVhbjtcbiAgLyoqIE1GQSBlbmZvcmNlbWVudC4gQGRlZmF1bHQgUkVRVUlSRUQgKi9cbiAgcmVhZG9ubHkgbWZhPzogY29nbml0by5NZmE7XG4gIC8qKiBTZWNvbmQgZmFjdG9ycy4gQGRlZmF1bHQgeyBvdHA6IHRydWUsIHNtczogZmFsc2UgfSAqL1xuICByZWFkb25seSBtZmFTZWNvbmRGYWN0b3I/OiBjb2duaXRvLk1mYVNlY29uZEZhY3RvcjtcbiAgLyoqIFBhc3N3b3JkIHBvbGljeS4gQGRlZmF1bHQgbWluTGVuZ3RoIDEyLCB1cHBlci9sb3dlci9kaWdpdHMvc3ltYm9scy4gKi9cbiAgcmVhZG9ubHkgcGFzc3dvcmRQb2xpY3k/OiBjb2duaXRvLlBhc3N3b3JkUG9saWN5O1xuICAvKiogQWR2YW5jZWQgc2VjdXJpdHkgbW9kZSAodGhyZWF0IHByb3RlY3Rpb24pLiBAZGVmYXVsdCBPRkYgKi9cbiAgcmVhZG9ubHkgYWR2YW5jZWRTZWN1cml0eU1vZGU/OiBjb2duaXRvLkFkdmFuY2VkU2VjdXJpdHlNb2RlO1xuICAvKiogU3RhbmRhcmQgYXR0cmlidXRlcyBjb25maWcuICovXG4gIHJlYWRvbmx5IHN0YW5kYXJkQXR0cmlidXRlcz86IGNvZ25pdG8uU3RhbmRhcmRBdHRyaWJ1dGVzO1xuICAvKiogQ3VzdG9tIGF0dHJpYnV0ZXMuICovXG4gIHJlYWRvbmx5IGN1c3RvbUF0dHJpYnV0ZXM/OiB7IFtrZXk6IHN0cmluZ106IGNvZ25pdG8uSUN1c3RvbUF0dHJpYnV0ZSB9O1xuICAvKiogRW5hYmxlIHRoZSBDVVNUT01fQVVUSCBmbG93IG9uIGFwcCBjbGllbnRzLiBAZGVmYXVsdCBmYWxzZSAqL1xuICByZWFkb25seSBlbmFibGVDdXN0b21BdXRoRmxvdz86IGJvb2xlYW47XG4gIC8qKiBBY2Nlc3MgdG9rZW4gdmFsaWRpdHkuIEBkZWZhdWx0IDEgaG91ciAqL1xuICByZWFkb25seSBhY2Nlc3NUb2tlblZhbGlkaXR5PzogY29yZS5EdXJhdGlvbjtcbiAgLyoqIElEIHRva2VuIHZhbGlkaXR5LiBAZGVmYXVsdCAxIGhvdXIgKi9cbiAgcmVhZG9ubHkgaWRUb2tlblZhbGlkaXR5PzogY29yZS5EdXJhdGlvbjtcbiAgLyoqIFJlZnJlc2ggdG9rZW4gdmFsaWRpdHkuIEBkZWZhdWx0IDMwIGRheXMgKi9cbiAgcmVhZG9ubHkgcmVmcmVzaFRva2VuVmFsaWRpdHk/OiBjb3JlLkR1cmF0aW9uO1xuICAvKiogQ29nbml0byBncm91cHMgdG8gY3JlYXRlLiAqL1xuICByZWFkb25seSBncm91cHM/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFByZS10b2tlbi1nZW5lcmF0aW9uIExhbWJkYSAoVjIpLiBAZGVmYXVsdCBhIGJ1bmRsZWQgbm8tb3AgbGlicmFyeSBMYW1iZGEgaXNcbiAgICogY3JlYXRlZC4gUGFzcyB5b3VyIG93biB0byBjdXN0b21pc2UgZW1pdHRlZCBjbGFpbXMuXG4gICAqL1xuICByZWFkb25seSBwcmVUb2tlbkdlbmVyYXRpb25MYW1iZGE/OiBsYW1iZGEuSUZ1bmN0aW9uO1xuICAvKipcbiAgICogRW5hYmxlIGVtYWlsIG9uZS10aW1lLXBhc3N3b3JkIChgRU1BSUxfT1RQYCkgYXMgdGhlIE1GQSBzZWNvbmQgZmFjdG9yLCBkZWxpdmVyZWRcbiAgICogYnkge0BsaW5rIGN1c3RvbUVtYWlsU2VuZGVyTGFtYmRhfS4gVGhpcyBpcyBzZXQgdmlhIGFuIEwxIG92ZXJyaWRlIG9uIHRoZVxuICAgKiB1bmRlcmx5aW5nIGBDZm5Vc2VyUG9vbGAgKGBFbmFibGVkTWZhczogWydFTUFJTF9PVFAnXWApIHJhdGhlciB0aGFuXG4gICAqIGBtZmFTZWNvbmRGYWN0b3IuZW1haWxgLCBiZWNhdXNlIHRoZSBDREsgTDIgcmVxdWlyZXMgYSBtYW5hZ2VkIChgREVWRUxPUEVSYCkgU0VTXG4gICAqIGBlbWFpbGAgY29uZmlnIGZvciBgbWZhU2Vjb25kRmFjdG9yLmVtYWlsYCDigJQgd2hpY2ggaXMgaW5jb21wYXRpYmxlIHdpdGggYVxuICAgKiBjdXN0b20tZW1haWwtc2VuZGVyLW9ubHkgZGVsaXZlcnkgcGF0aC4gUmVxdWlyZXMge0BsaW5rIGN1c3RvbUVtYWlsU2VuZGVyTGFtYmRhfVxuICAgKiBhbmQge0BsaW5rIGN1c3RvbVNlbmRlckttc0tleX0sIGFuZCBhIHBvb2wgZmVhdHVyZSBwbGFuIG9mIEVzc2VudGlhbHMgb3IgaGlnaGVyLlxuICAgKiBXaGVuIHRydWUsIGFueSBgb3RwYC9gc21zYCBpbiB7QGxpbmsgbWZhU2Vjb25kRmFjdG9yfSBpcyBpZ25vcmVkIOKAlCBFTUFJTF9PVFAgaXNcbiAgICogdGhlIHNvbGUgZmFjdG9yLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZW1haWxPdHBNZmE/OiBib29sZWFuO1xuICAvKipcbiAgICogQ29uZmlndXJlIHRoZSBwb29sIGZvciBQQVNTV09SRExFU1MgY3VzdG9tZXIgc2lnbi1pbiB1c2luZyBjaG9pY2UtYmFzZWRcbiAgICogYXV0aGVudGljYXRpb24gKGBVU0VSX0FVVEhgKSB3aXRoIGBFTUFJTF9PVFBgIGFzIGEgZmlyc3QgYXV0aCBmYWN0b3IuIFRoZVxuICAgKiBjdXN0b21lciBzaWducyBpbiB3aXRoIGp1c3QgdGhlaXIgZW1haWwgYW5kIGEgb25lLXRpbWUgY29kZSDigJQgbm8gcGFzc3dvcmQgYW5kXG4gICAqIG5vIHNlY29uZCBmYWN0b3IuIERlbGl2ZXJlZCBieSB7QGxpbmsgY3VzdG9tRW1haWxTZW5kZXJMYW1iZGF9OyByZXF1aXJlc1xuICAgKiB7QGxpbmsgY3VzdG9tU2VuZGVyS21zS2V5fSBhbmQge0BsaW5rIGVtYWlsQ29uZmlndXJhdGlvbn0gKHNhbWUgZW5hYmxlbWVudFxuICAgKiBwcmVjb25kaXRpb24gYXMge0BsaW5rIGVtYWlsT3RwTWZhfSksIGFuZCBhbiBFc3NlbnRpYWxzLW9yLWhpZ2hlciBmZWF0dXJlIHBsYW4uXG4gICAqXG4gICAqIEhhcmQgQ29nbml0byBjb25zdHJhaW50cyB0aGlzIG1vZGUgZW5jb2RlcyAocHJvdmVuIGFnYWluc3QgYSBsaXZlIHBvb2wpOlxuICAgKiAtIGBQQVNTV09SRGAgaXMgTUFOREFUT1JZIGluIGBBbGxvd2VkRmlyc3RBdXRoRmFjdG9yc2A7IENvZ25pdG8gcmVqZWN0cyBhIGxpc3RcbiAgICogICB3aXRob3V0IGl0LiBTbyB0aGUgcG9vbCBhbGxvd3MgYFtQQVNTV09SRCwgRU1BSUxfT1RQXWAgYW5kIHRoZSBDT05TVU1FUidzIFVJXG4gICAqICAgbXVzdCBuZXZlciBvZmZlciB0aGUgcGFzc3dvcmQgcGF0aCAoYWx3YXlzIGBJbml0aWF0ZUF1dGgoVVNFUl9BVVRILFxuICAgKiAgIFBSRUZFUlJFRF9DSEFMTEVOR0U9RU1BSUxfT1RQKWApLiBUbyBrZWVwIHRoZSBwYXNzd29yZCB1bnJlYWNoYWJsZSB0aHJvdWdoIHRoZVxuICAgKiAgIGFwcCBjbGllbnQgdG9vLCB0aGlzIG1vZGUgYWxzbyBkcm9wcyB0aGUgYHVzZXJTcnBgIGF1dGggZmxvdyBhbmQgZW5hYmxlcyB0aGVcbiAgICogICBgdXNlcmAgKGNob2ljZS1iYXNlZCBgQUxMT1dfVVNFUl9BVVRIYCkgZmxvdyBvbiB0aGUgYXBwIGNsaWVudHMuXG4gICAqIC0gYEVNQUlMX09UUGAgYXMgYSBmaXJzdCBmYWN0b3IgaXMgSU5DT01QQVRJQkxFIHdpdGggYE1mYUNvbmZpZ3VyYXRpb246IE9OYCwgc29cbiAgICogICB0aGlzIG1vZGUgZm9yY2VzIGBtZmE6IE9GRmAuIE5PVEU6IHRoZSBgT0ZGIC0+IE9OYCB0cmFuc2l0aW9uIGlzIGlycmV2ZXJzaWJsZVxuICAgKiAgIHZpYSB0aGUgQVBJLCBzbyBhIHBvb2wgY3JlYXRlZCB3aXRoIHRoaXMgbW9kZSBjYW5ub3QgbGF0ZXIgZ2FpbiBNRkEgaW4gcGxhY2UuXG4gICAqXG4gICAqIE11dHVhbGx5IGV4Y2x1c2l2ZSB3aXRoIHtAbGluayBlbWFpbE90cE1mYX0gKGVtYWlsIGlzIGEgZmlyc3QgZmFjdG9yIGhlcmUsIGFcbiAgICogc2Vjb25kIGZhY3RvciB0aGVyZSkuIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBwYXNzd29yZGxlc3NFbWFpbE90cD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDdXN0b20gRW1haWwgU2VuZGVyIExhbWJkYS4gV2hlbiBzZXQgKHRvZ2V0aGVyIHdpdGgge0BsaW5rIGN1c3RvbVNlbmRlckttc0tleX0pLFxuICAgKiBpdCBpcyB3aXJlZCB0byB0aGUgcG9vbCB2aWEgdGhlIGBDVVNUT01fRU1BSUxfU0VOREVSYCB0cmlnZ2VyIGFuZCBDb2duaXRvXG4gICAqIGRlbGl2ZXJzIGFsbCBjdXN0b21lciBlbWFpbHMgKE1GQSBjb2RlcywgdmVyaWZpY2F0aW9uLCB0ZW1wb3JhcnkgcGFzc3dvcmRzKVxuICAgKiB0aHJvdWdoIHRoaXMgTGFtYmRhIGluc3RlYWQgb2YgaXRzIGRlZmF1bHQgc2VuZGVyIG9yIGEgbWFuYWdlZCBTRVMgc2VuZGVyLlxuICAgKiBDb2duaXRvIGVuY3J5cHRzIGVhY2ggY29kZSB0byB7QGxpbmsgY3VzdG9tU2VuZGVyS21zS2V5fTsgdGhlIExhbWJkYSBkZWNyeXB0c1xuICAgKiBpdCB3aXRoIHRoZSBBV1MgRW5jcnlwdGlvbiBTREsgYmVmb3JlIHNlbmRpbmcuIFJlcXVpcmVzIHtAbGluayBjdXN0b21TZW5kZXJLbXNLZXl9LlxuICAgKiBAZGVmYXVsdCAtIENvZ25pdG8ncyBkZWZhdWx0IGVtYWlsIGRlbGl2ZXJ5XG4gICAqL1xuICByZWFkb25seSBjdXN0b21FbWFpbFNlbmRlckxhbWJkYT86IGxhbWJkYS5JRnVuY3Rpb247XG4gIC8qKlxuICAgKiBTeW1tZXRyaWMgS01TIGtleSBDb2duaXRvIHVzZXMgdG8gZW5jcnlwdCBjb2RlcyBmb3Ige0BsaW5rIGN1c3RvbUVtYWlsU2VuZGVyTGFtYmRhfS5cbiAgICogUmVxdWlyZWQgd2hlbiBhIGN1c3RvbSBlbWFpbCBzZW5kZXIgaXMgcHJvdmlkZWQ7IGlnbm9yZWQgb3RoZXJ3aXNlLiBDb2duaXRvIGlzXG4gICAqIGdyYW50ZWQgZW5jcnlwdC9kZWNyeXB0IG9uIGl0OyB0aGUgTGFtYmRhIG11c3QgYmUgc2VwYXJhdGVseSBncmFudGVkIGRlY3J5cHQuXG4gICAqIEBkZWZhdWx0IC0gbm8ga2V5IChvbmx5IHZhbGlkIHdoZW4gbm8gY3VzdG9tIGVtYWlsIHNlbmRlciBpcyBzZXQpXG4gICAqL1xuICByZWFkb25seSBjdXN0b21TZW5kZXJLbXNLZXk/OiBrbXMuSUtleTtcbiAgLyoqXG4gICAqIFNhbWUtYWNjb3VudCBTRVMgZW1haWwgY29uZmlndXJhdGlvbiBmb3IgdGhlIHBvb2wuIFJFUVVJUkVEIHdoZW5cbiAgICoge0BsaW5rIGVtYWlsT3RwTWZhfSBpcyBzZXQ6IENvZ25pdG8gcmVmdXNlcyB0byBlbmFibGUgRU1BSUxfT1RQIE1GQSB1bmxlc3MgdGhlXG4gICAqIHBvb2wgY2FycmllcyBhbiBgRW1haWxTZW5kaW5nQWNjb3VudDogREVWRUxPUEVSYCBjb25maWd1cmF0aW9uIHBvaW50aW5nIGF0IGFcbiAgICogVkVSSUZJRUQgU0VTIGlkZW50aXR5IGluIHRoZSBwb29sJ3MgT1dOIGFjY291bnQg4oCUIHRoaXMgcHJlY29uZGl0aW9uIGlzIHZhbGlkYXRlZFxuICAgKiBhdCB0aGUgcG9vbC1jb25maWcgbGF5ZXIsIEJFRk9SRSBhbnkgZW1haWwgaXMgcm91dGVkLCBzbyBhXG4gICAqIHtAbGluayBjdXN0b21FbWFpbFNlbmRlckxhbWJkYX0gKHdoaWNoIG92ZXJyaWRlcyBkZWxpdmVyeSkgZG9lcyBub3Qgc2F0aXNmeSBpdC5cbiAgICpcbiAgICogVGhlIGlkZW50aXR5IGhlcmUgZXhpc3RzIG9ubHkgdG8gc2F0aXNmeSB0aGF0IGVuYWJsZW1lbnQgcHJlY29uZGl0aW9uOyB3aGVuIGFcbiAgICogY3VzdG9tIGVtYWlsIHNlbmRlciBpcyBhdHRhY2hlZCwgQ29nbml0byBuZXZlciBhY3R1YWxseSBzZW5kcyB0aHJvdWdoIHRoaXNcbiAgICogaWRlbnRpdHkgKHRoZSBMYW1iZGEgaW50ZXJjZXB0cyBldmVyeSBlbWFpbCksIHNvIGEgY3Jvc3MtYWNjb3VudCBvclxuICAgKiBTRVMtc2FuZGJveCBkZWxpdmVyeSBwYXRoIGlzIHVuYWZmZWN0ZWQuIFByZWZlciBhIHZlcmlmaWVkIERPTUFJTiBpZGVudGl0eTtcbiAgICogYSB2ZXJpZmllZCBlbWFpbC1hZGRyZXNzIGlkZW50aXR5IGFsc28gd29ya3MgaWYgQ29nbml0byByZWplY3RzIHRoZSBkb21haW4gZm9ybS5cbiAgICogQGRlZmF1bHQgLSBubyBTRVMgY29uZmlnIChDb2duaXRvIGRlZmF1bHQgc2VuZGVyOyBub3QgdmFsaWQgd2l0aCBlbWFpbE90cE1mYSlcbiAgICovXG4gIHJlYWRvbmx5IGVtYWlsQ29uZmlndXJhdGlvbj86IENvZ25pdG9DdXN0b21lclBvb2xFbWFpbENvbmZpZztcbiAgLyoqXG4gICAqIEwxIGFjY291bnQtdGFrZW92ZXIgcmlzayBjb25maWd1cmF0aW9uIChyZXF1aXJlcyB7QGxpbmsgYWR2YW5jZWRTZWN1cml0eU1vZGV9XG4gICAqIEVORk9SQ0VEL0FVRElUKS4gUGFzc2VkIHRocm91Z2ggdG8gQ2ZuVXNlclBvb2xSaXNrQ29uZmlndXJhdGlvbkF0dGFjaG1lbnQuXG4gICAqL1xuICByZWFkb25seSBhY2NvdW50VGFrZW92ZXJSaXNrQ29uZmlndXJhdGlvbj86IEFjY291bnRUYWtlb3ZlclJpc2tDb25maWc7XG4gIC8qKiBMMSBjb21wcm9taXNlZC1jcmVkZW50aWFscyByaXNrIGNvbmZpZ3VyYXRpb24uICovXG4gIHJlYWRvbmx5IGNvbXByb21pc2VkQ3JlZGVudGlhbHNSaXNrQ29uZmlndXJhdGlvbj86IENvbXByb21pc2VkQ3JlZGVudGlhbHNSaXNrQ29uZmlnO1xuICAvKiogT3B0aW9uYWwgaWRlbnRpdHkgcG9vbCArIEFCQUMgY29uZmlndXJhdGlvbi4gKi9cbiAgcmVhZG9ubHkgaWRlbnRpdHlQb29sPzogQ29nbml0b0lkZW50aXR5UG9vbEFiYWNDb25maWc7XG4gIC8qKiBSZW1vdmFsIHBvbGljeSBmb3IgdGhlIHBvb2wuIEBkZWZhdWx0IFJFVEFJTiAqL1xuICByZWFkb25seSByZW1vdmFsUG9saWN5PzogY29yZS5SZW1vdmFsUG9saWN5O1xufVxuXG4vKipcbiAqIEEgZ2VuZXJpYywgcmV1c2FibGUgc2VjdXJlIENvZ25pdG8gKipjdXN0b21lcioqIHVzZXIgcG9vbCBmb3IgdGhlIGN1c3RvbS1VSVxuICogKGNsaWVudC1zaWRlIFNSUCkgYXV0aGVudGljYXRpb24gcGF0dGVybjogcHVibGljIFBLQ0UgYXBwIGNsaWVudHMsIE1GQSxcbiAqIHN0cm9uZyBwYXNzd29yZCBwb2xpY3ksIG9wdGlvbmFsIGFkdmFuY2VkLXNlY3VyaXR5IHRocmVhdCBwcm90ZWN0aW9uLFxuICogcGVyLWNsaWVudCAocGVyLWJyYW5kKSBhcHAgY2xpZW50cywgYW5kIGFuIG9wdGlvbmFsIGlkZW50aXR5IHBvb2wgd2l0aCBBQkFDLlxuICpcbiAqIFByb3Zpc2lvbnMgT05MWSB0aGUgaWRlbnRpdHkgcHJvdmlkZXIuIEl0IGtub3dzIG5vdGhpbmcgYWJvdXQgQ2xvdWRGcm9udCxcbiAqIHNlc3Npb25zLCBvciBhbnkgc3BlY2lmaWMgcHJvamVjdCDigJQgcGFpciBpdCB3aXRoIGBDb2duaXRvU2Vzc2lvbkJhY2tlbmRgXG4gKiAoc2Vzc2lvbiBzdWJzdHJhdGUpIGFuZCBgQ29nbml0b0N1c3RvbVVpQXV0aGAgKGVkZ2UvQ0ROKS5cbiAqL1xuZXhwb3J0IGNsYXNzIENvZ25pdG9DdXN0b21lclBvb2wgZXh0ZW5kcyBjb25zdHJ1Y3RzLkNvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSB1c2VyUG9vbDogY29nbml0by5Vc2VyUG9vbDtcbiAgLyoqIEFwcCBjbGllbnRzIGtleWVkIGJ5IHtAbGluayBDb2duaXRvQXBwQ2xpZW50U3BlYy5rZXl9LiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdXNlclBvb2xDbGllbnRzOiBSZWNvcmQ8c3RyaW5nLCBjb2duaXRvLlVzZXJQb29sQ2xpZW50PjtcbiAgLyoqIFRoZSBmaXJzdCBhcHAgY2xpZW50LCBmb3IgY29udmVuaWVuY2UuICovXG4gIHB1YmxpYyByZWFkb25seSB1c2VyUG9vbENsaWVudDogY29nbml0by5Vc2VyUG9vbENsaWVudDtcbiAgcHVibGljIHJlYWRvbmx5IHVzZXJQb29sRG9tYWluOiBjb2duaXRvLlVzZXJQb29sRG9tYWluO1xuICAvKiogSG9zdGVkLVVJIGRvbWFpbiBVUkwsIGUuZy4gYDxwcmVmaXg+LmF1dGguPHJlZ2lvbj4uYW1hem9uY29nbml0by5jb21gLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY29nbml0b0RvbWFpblVybDogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgaWRlbnRpdHlQb29sPzogY29nbml0by5DZm5JZGVudGl0eVBvb2w7XG4gIHB1YmxpYyByZWFkb25seSBhdXRoZW50aWNhdGVkUm9sZT86IGlhbS5Sb2xlO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IENvZ25pdG9DdXN0b21lclBvb2xQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBpZiAoIXByb3BzLmFwcENsaWVudHMgfHwgcHJvcHMuYXBwQ2xpZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ29nbml0b0N1c3RvbWVyUG9vbCByZXF1aXJlcyBhdCBsZWFzdCBvbmUgYXBwIGNsaWVudCcpO1xuICAgIH1cblxuICAgIGlmICgocHJvcHMuY3VzdG9tRW1haWxTZW5kZXJMYW1iZGEgPT09IHVuZGVmaW5lZCkgIT09IChwcm9wcy5jdXN0b21TZW5kZXJLbXNLZXkgPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0NvZ25pdG9DdXN0b21lclBvb2w6IGN1c3RvbUVtYWlsU2VuZGVyTGFtYmRhIGFuZCBjdXN0b21TZW5kZXJLbXNLZXkgbXVzdCBiZSBwcm92aWRlZCB0b2dldGhlciDigJQgJ1xuICAgICAgICArICdhIGN1c3RvbSBlbWFpbCBzZW5kZXIgcmVxdWlyZXMgYSBLTVMga2V5IGZvciBDb2duaXRvIHRvIGVuY3J5cHQgY29kZXMgdG8sIGFuZCB0aGUga2V5IGlzIHVudXNlZCB3aXRob3V0IHRoZSBMYW1iZGEuJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLmVtYWlsT3RwTWZhICYmICFwcm9wcy5jdXN0b21FbWFpbFNlbmRlckxhbWJkYSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnQ29nbml0b0N1c3RvbWVyUG9vbDogZW1haWxPdHBNZmEgcmVxdWlyZXMgY3VzdG9tRW1haWxTZW5kZXJMYW1iZGEgKGFuZCBjdXN0b21TZW5kZXJLbXNLZXkpIOKAlCAnXG4gICAgICAgICsgJ0VNQUlMX09UUCBjb2RlcyBhcmUgZGVsaXZlcmVkIGJ5IHRoZSBjdXN0b20gZW1haWwgc2VuZGVyLCBzbyBlbWFpbCBNRkEgY2Fubm90IGJlIGVuYWJsZWQgd2l0aG91dCBpdC4nLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMuZW1haWxPdHBNZmEgJiYgIXByb3BzLmVtYWlsQ29uZmlndXJhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnQ29nbml0b0N1c3RvbWVyUG9vbDogZW1haWxPdHBNZmEgcmVxdWlyZXMgZW1haWxDb25maWd1cmF0aW9uIOKAlCAnXG4gICAgICAgICsgJ0NvZ25pdG8gcmVmdXNlcyB0byBlbmFibGUgRU1BSUxfT1RQIE1GQSB1bmxlc3MgdGhlIHBvb2wgY2FycmllcyBhIERFVkVMT1BFUiBTRVMgJ1xuICAgICAgICArICdFbWFpbENvbmZpZ3VyYXRpb24gb24gYSB2ZXJpZmllZCBzYW1lLWFjY291bnQgaWRlbnRpdHkuIFRoaXMgcHJlY29uZGl0aW9uIGlzIGNoZWNrZWQgJ1xuICAgICAgICArICdiZWZvcmUgYW55IGVtYWlsIGlzIHJvdXRlZCwgc28gdGhlIGN1c3RvbSBlbWFpbCBzZW5kZXIgZG9lcyBub3Qgc2F0aXNmeSBpdC4nLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMucGFzc3dvcmRsZXNzRW1haWxPdHAgJiYgcHJvcHMuZW1haWxPdHBNZmEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0NvZ25pdG9DdXN0b21lclBvb2w6IHBhc3N3b3JkbGVzc0VtYWlsT3RwIGFuZCBlbWFpbE90cE1mYSBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlIOKAlCAnXG4gICAgICAgICsgJ3Bhc3N3b3JkbGVzcyB1c2VzIEVNQUlMX09UUCBhcyBhIEZJUlNUIGF1dGggZmFjdG9yIChNRkEgb2ZmKSwgd2hpbGUgZW1haWxPdHBNZmEgdXNlcyBpdCAnXG4gICAgICAgICsgJ2FzIGEgU0VDT05EIGZhY3RvciAoTUZBIG9uKS4gQ2hvb3NlIG9uZS4nLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMucGFzc3dvcmRsZXNzRW1haWxPdHAgJiYgKCFwcm9wcy5jdXN0b21FbWFpbFNlbmRlckxhbWJkYSB8fCAhcHJvcHMuZW1haWxDb25maWd1cmF0aW9uKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnQ29nbml0b0N1c3RvbWVyUG9vbDogcGFzc3dvcmRsZXNzRW1haWxPdHAgcmVxdWlyZXMgY3VzdG9tRW1haWxTZW5kZXJMYW1iZGEsIGN1c3RvbVNlbmRlckttc0tleSAnXG4gICAgICAgICsgJ2FuZCBlbWFpbENvbmZpZ3VyYXRpb24g4oCUIHRoZSBmaXJzdC1mYWN0b3IgRU1BSUxfT1RQIGNvZGUgaXMgZGVsaXZlcmVkIGJ5IHRoZSBjdXN0b20gZW1haWwgJ1xuICAgICAgICArICdzZW5kZXIsIGFuZCBDb2duaXRvIHJlcXVpcmVzIHRoZSBzYW1lIERFVkVMT1BFUiBTRVMgRW1haWxDb25maWd1cmF0aW9uIGVuYWJsZW1lbnQgcHJlY29uZGl0aW9uLicsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFdpdGggZW1haWxPdHBNZmEsIEVNQUlMX09UUCBpcyB0aGUgc29sZSBmYWN0b3IgYW5kIGlzIGFwcGxpZWQgdmlhIGFuIEwxXG4gICAgLy8gb3ZlcnJpZGUgYmVsb3c7IGRvIE5PVCBwYXNzIG1mYVNlY29uZEZhY3Rvci5lbWFpbCB0byB0aGUgTDIgKGl0cyB2YWxpZGF0ZUVtYWlsTWZhXG4gICAgLy8gZGVtYW5kcyBhIGBlbWFpbGAgVXNlclBvb2xFbWFpbCBiZSBzZXQsIHdoaWNoIHdlIHN1cHBseSBzZXBhcmF0ZWx5IHZpYVxuICAgIC8vIGVtYWlsQ29uZmlndXJhdGlvbiDigJQgc2VlIHRoZSBgZW1haWxgIHByb3AgYmVsb3cpLlxuICAgIGNvbnN0IGwyTWZhU2Vjb25kRmFjdG9yID0gcHJvcHMuZW1haWxPdHBNZmFcbiAgICAgID8geyBvdHA6IGZhbHNlLCBzbXM6IGZhbHNlIH1cbiAgICAgIDogKHByb3BzLm1mYVNlY29uZEZhY3RvciA/PyB7IG90cDogdHJ1ZSwgc21zOiBmYWxzZSB9KTtcblxuICAgIGNvbnN0IGFjY291bnRSZWNvdmVyeSA9IHByb3BzLmVtYWlsT3RwTWZhXG4gICAgLy8gQ29nbml0byByZWplY3RzIEVtYWlsTWZhQ29uZmlndXJhdGlvbiB1bmxlc3MgQWNjb3VudFJlY292ZXJ5U2V0dGluZyBoYXMgYXRcbiAgICAvLyBsZWFzdCBvbmUgbWVjaGFuaXNtIG90aGVyIHRoYW4gdmVyaWZpZWRfZW1haWwgKHJlY292ZXJpbmcgZW1haWwtYmFzZWQgTUZBIHZpYVxuICAgIC8vIGVtYWlsIGlzIGNpcmN1bGFyKS4gQWNjb3VudFJlY292ZXJ5Lk5PTkUgbWFwcyB0byB0aGUgYWRtaW5fb25seSBtZWNoYW5pc20sIHdoaWNoXG4gICAgLy8gc2F0aXNmaWVzIHRoZSBjb25zdHJhaW50IHdpdGhvdXQgaW50cm9kdWNpbmcgYW4gU01TL3Bob25lIGZhY3RvciBpbnRvIHRoaXNcbiAgICAvLyBwYXNzd29yZGxlc3MtZW1haWwgZGVzaWduLiBPdGhlcndpc2Uga2VlcCB0aGUgZW1haWwtb25seSBkZWZhdWx0LlxuICAgICAgPyBjb2duaXRvLkFjY291bnRSZWNvdmVyeS5OT05FXG4gICAgICA6IGNvZ25pdG8uQWNjb3VudFJlY292ZXJ5LkVNQUlMX09OTFk7XG5cbiAgICAvLyBQYXNzd29yZGxlc3MgdXNlcyBFTUFJTF9PVFAgYXMgYSBGSVJTVCBhdXRoIGZhY3Rvciwgd2hpY2ggQ29nbml0byBmb3JiaWRzIHdoaWxlXG4gICAgLy8gTUZBIGlzIE9OIChcIk9ubHkgUEFTU1dPUkQgYW5kIFdFQl9BVVRITiBjYW4gYmUgZW5hYmxlZCBhcyBhbiBhdXRoIGZhY3RvciBpZiBNRkFcbiAgICAvLyBpcyBlbmFibGVkXCIpLiBTbyBwYXNzd29yZGxlc3MgZm9yY2VzIE1GQSBPRkYuIE5COiB0aGUgT0ZGLT5PTiB0cmFuc2l0aW9uIGlzXG4gICAgLy8gaXJyZXZlcnNpYmxlIHZpYSB0aGUgQVBJIOKAlCBhIHBvb2wgY3JlYXRlZCBwYXNzd29yZGxlc3MgY2Fubm90IGxhdGVyIGdhaW4gTUZBIGluIHBsYWNlLlxuICAgIGNvbnN0IG1mYUNvbmZpZyA9IHByb3BzLnBhc3N3b3JkbGVzc0VtYWlsT3RwXG4gICAgICA/IGNvZ25pdG8uTWZhLk9GRlxuICAgICAgOiAocHJvcHMubWZhID8/IGNvZ25pdG8uTWZhLlJFUVVJUkVEKTtcblxuICAgIHRoaXMudXNlclBvb2wgPSBuZXcgY29nbml0by5Vc2VyUG9vbCh0aGlzLCAnVXNlclBvb2wnLCB7XG4gICAgICB1c2VyUG9vbE5hbWU6IHByb3BzLnVzZXJQb29sTmFtZSxcbiAgICAgIHNlbGZTaWduVXBFbmFibGVkOiBwcm9wcy5zZWxmU2lnblVwRW5hYmxlZCA/PyBmYWxzZSxcbiAgICAgIHNpZ25JbkFsaWFzZXM6IHsgZW1haWw6IHRydWUgfSxcbiAgICAgIHNpZ25JbkNhc2VTZW5zaXRpdmU6IGZhbHNlLFxuICAgICAgbWZhOiBtZmFDb25maWcsXG4gICAgICBtZmFTZWNvbmRGYWN0b3I6IGwyTWZhU2Vjb25kRmFjdG9yLFxuICAgICAgcGFzc3dvcmRQb2xpY3k6IHByb3BzLnBhc3N3b3JkUG9saWN5ID8/IHtcbiAgICAgICAgbWluTGVuZ3RoOiAxMixcbiAgICAgICAgcmVxdWlyZUxvd2VyY2FzZTogdHJ1ZSxcbiAgICAgICAgcmVxdWlyZVVwcGVyY2FzZTogdHJ1ZSxcbiAgICAgICAgcmVxdWlyZURpZ2l0czogdHJ1ZSxcbiAgICAgICAgcmVxdWlyZVN5bWJvbHM6IHRydWUsXG4gICAgICB9LFxuICAgICAgYWR2YW5jZWRTZWN1cml0eU1vZGU6IHByb3BzLmFkdmFuY2VkU2VjdXJpdHlNb2RlID8/IGNvZ25pdG8uQWR2YW5jZWRTZWN1cml0eU1vZGUuT0ZGLFxuICAgICAgc3RhbmRhcmRBdHRyaWJ1dGVzOiBwcm9wcy5zdGFuZGFyZEF0dHJpYnV0ZXMsXG4gICAgICBjdXN0b21BdHRyaWJ1dGVzOiBwcm9wcy5jdXN0b21BdHRyaWJ1dGVzLFxuICAgICAgYXV0b1ZlcmlmeTogeyBlbWFpbDogdHJ1ZSB9LFxuICAgICAgYWNjb3VudFJlY292ZXJ5LFxuICAgICAgLy8gQ3VzdG9tIEVtYWlsIFNlbmRlcjogd2hlbiBwcm92aWRlZCwgQ29nbml0byByb3V0ZXMgZXZlcnkgY3VzdG9tZXIgZW1haWxcbiAgICAgIC8vIHRocm91Z2ggdGhpcyBMYW1iZGEgYW5kIGVuY3J5cHRzIGNvZGVzIHRvIGN1c3RvbVNlbmRlckttc0tleS4gQm90aCBtdXN0IGJlXG4gICAgICAvLyBzZXQgb24gdGhlIHBvb2wgYXQgY29uc3RydWN0aW9uIOKAlCB0aGUgS01TIGtleSBpcyBub3Qgc2V0dGFibGUgdmlhIGFkZFRyaWdnZXIuXG4gICAgICBjdXN0b21TZW5kZXJLbXNLZXk6IHByb3BzLmN1c3RvbVNlbmRlckttc0tleSxcbiAgICAgIGxhbWJkYVRyaWdnZXJzOiBwcm9wcy5jdXN0b21FbWFpbFNlbmRlckxhbWJkYVxuICAgICAgICA/IHsgY3VzdG9tRW1haWxTZW5kZXI6IHByb3BzLmN1c3RvbUVtYWlsU2VuZGVyTGFtYmRhIH1cbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICByZW1vdmFsUG9saWN5OiBwcm9wcy5yZW1vdmFsUG9saWN5ID8/IGNvcmUuUmVtb3ZhbFBvbGljeS5SRVRBSU4sXG4gICAgfSk7XG5cbiAgICAvLyBMMSBlc2NhcGUgaGF0Y2g6IGVuYWJsZSBFTUFJTF9PVFAgYXMgdGhlIG9ubHkgTUZBIGZhY3Rvci4gVGhlIEwyIGNhbm5vdCBleHByZXNzXG4gICAgLy8gXCJlbWFpbCBNRkEgZGVsaXZlcmVkIHNvbGVseSBieSBhIGN1c3RvbSBzZW5kZXJcIiAoc2VlIGVtYWlsT3RwTWZhIGRvY3MpLCBzbyBzZXRcbiAgICAvLyBFbmFibGVkTWZhcyBkaXJlY3RseSBvbiB0aGUgdW5kZXJseWluZyBDZm5Vc2VyUG9vbC4gVGhlIGN1c3RvbSBlbWFpbCBzZW5kZXJcbiAgICAvLyBkZWxpdmVycyB0aGUgY29kZSwgYnV0IENvZ25pdG8gc3RpbGwgcmVxdWlyZXMgYSBERVZFTE9QRVIgU0VTIEVtYWlsQ29uZmlndXJhdGlvblxuICAgIC8vIG9uIGEgdmVyaWZpZWQgc2FtZS1hY2NvdW50IGlkZW50aXR5IGFzIGFuIEVOQUJMRU1FTlQgcHJlY29uZGl0aW9uIChiZWxvdykuXG4gICAgaWYgKHByb3BzLmVtYWlsQ29uZmlndXJhdGlvbikge1xuICAgICAgLy8gU2V0IEVtYWlsQ29uZmlndXJhdGlvbiB2aWEgTDEgd2l0aCB0aGUgY2FsbGVyJ3MgZXhhY3QgdmVyaWZpZWQgc2FtZS1hY2NvdW50XG4gICAgICAvLyBpZGVudGl0eSBBUk4g4oCUIGFjY2VwdGluZyBlaXRoZXIgYSBkb21haW4gb3IgYW4gZW1haWwtYWRkcmVzcyBpZGVudGl0eSB3aXRob3V0XG4gICAgICAvLyBDREsgcmUtZGVyaXZpbmcgdGhlIEFSTiBmcm9tIHRoZSBGcm9tIGFkZHJlc3MuIFRoaXMgc2F0aXNmaWVzIENvZ25pdG8nc1xuICAgICAgLy8gRU1BSUxfT1RQIGVuYWJsZW1lbnQgcHJlY29uZGl0aW9uOyB0aGUgY3VzdG9tIGVtYWlsIHNlbmRlciBzdGlsbCBvdmVycmlkZXNcbiAgICAgIC8vIGFjdHVhbCBkZWxpdmVyeSwgc28gdGhpcyBpZGVudGl0eSBpcyBuZXZlciBzZW50IHRocm91Z2guXG4gICAgICBjb25zdCBjZm5Qb29sID0gdGhpcy51c2VyUG9vbC5ub2RlLmRlZmF1bHRDaGlsZCBhcyBjb2duaXRvLkNmblVzZXJQb29sO1xuICAgICAgY2ZuUG9vbC5lbWFpbENvbmZpZ3VyYXRpb24gPSB7XG4gICAgICAgIGVtYWlsU2VuZGluZ0FjY291bnQ6ICdERVZFTE9QRVInLFxuICAgICAgICBzb3VyY2VBcm46IHByb3BzLmVtYWlsQ29uZmlndXJhdGlvbi5zZXNWZXJpZmllZERvbWFpbkFybixcbiAgICAgICAgZnJvbTogcHJvcHMuZW1haWxDb25maWd1cmF0aW9uLmZyb21OYW1lXG4gICAgICAgICAgPyBgJHtwcm9wcy5lbWFpbENvbmZpZ3VyYXRpb24uZnJvbU5hbWV9IDwke3Byb3BzLmVtYWlsQ29uZmlndXJhdGlvbi5mcm9tRW1haWx9PmBcbiAgICAgICAgICA6IHByb3BzLmVtYWlsQ29uZmlndXJhdGlvbi5mcm9tRW1haWwsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5lbWFpbE90cE1mYSkge1xuICAgICAgY29uc3QgY2ZuUG9vbCA9IHRoaXMudXNlclBvb2wubm9kZS5kZWZhdWx0Q2hpbGQgYXMgY29nbml0by5DZm5Vc2VyUG9vbDtcbiAgICAgIGNmblBvb2wuZW5hYmxlZE1mYXMgPSBbJ0VNQUlMX09UUCddO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5wYXNzd29yZGxlc3NFbWFpbE90cCkge1xuICAgICAgLy8gQ2hvaWNlLWJhc2VkIHNpZ24taW46IEVNQUlMX09UUCBhcyBhIGZpcnN0IGF1dGggZmFjdG9yLiBQQVNTV09SRCBpcyBNQU5EQVRPUllcbiAgICAgIC8vIGluIEFsbG93ZWRGaXJzdEF1dGhGYWN0b3JzIChDb2duaXRvIHJlamVjdHMgYSBsaXN0IHdpdGhvdXQgaXQpLCBzbyBpdCBzdGF5cyDigJRcbiAgICAgIC8vIGJ1dCB0aGUgYXBwIGNsaWVudCBiZWxvdyBkcm9wcyB0aGUgcGFzc3dvcmQgKHVzZXJTcnApIGZsb3cgYW5kIHRoZSBjb25zdW1lcidzXG4gICAgICAvLyBVSSBuZXZlciBvZmZlcnMgaXQsIHNvIHRoZSBwYXNzd29yZCBwYXRoIGlzIHVucmVhY2hhYmxlIHRocm91Z2ggdGhpcyBjbGllbnQuXG4gICAgICBjb25zdCBjZm5Qb29sID0gdGhpcy51c2VyUG9vbC5ub2RlLmRlZmF1bHRDaGlsZCBhcyBjb2duaXRvLkNmblVzZXJQb29sO1xuICAgICAgY2ZuUG9vbC5wb2xpY2llcyA9IHtcbiAgICAgICAgLi4uKGNmblBvb2wucG9saWNpZXMgYXMgY29nbml0by5DZm5Vc2VyUG9vbC5Qb2xpY2llc1Byb3BlcnR5IHwgdW5kZWZpbmVkKSxcbiAgICAgICAgc2lnbkluUG9saWN5OiB7IGFsbG93ZWRGaXJzdEF1dGhGYWN0b3JzOiBbJ1BBU1NXT1JEJywgJ0VNQUlMX09UUCddIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IHByZVRva2VuTGFtYmRhID0gcHJvcHMucHJlVG9rZW5HZW5lcmF0aW9uTGFtYmRhID8/IG5ldyBsYW1iZGEuRnVuY3Rpb24odGhpcywgJ1ByZVRva2VuTGFtYmRhJywge1xuICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuUFlUSE9OXzNfMTIsXG4gICAgICBoYW5kbGVyOiAnaW5kZXguaGFuZGxlcicsXG4gICAgICBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQocGF0aC5qb2luKF9fZGlybmFtZSwgJy4uL2xhbWJkYS9wcmUtdG9rZW4nKSksXG4gICAgICB0aW1lb3V0OiBjb3JlLkR1cmF0aW9uLnNlY29uZHMoNSksXG4gICAgfSk7XG4gICAgdGhpcy51c2VyUG9vbC5hZGRUcmlnZ2VyKGNvZ25pdG8uVXNlclBvb2xPcGVyYXRpb24uUFJFX1RPS0VOX0dFTkVSQVRJT05fQ09ORklHLCBwcmVUb2tlbkxhbWJkYSwgY29nbml0by5MYW1iZGFWZXJzaW9uLlYyXzApO1xuXG4gICAgaWYgKHByb3BzLmdyb3Vwcykge1xuICAgICAgZm9yIChjb25zdCBncm91cCBvZiBwcm9wcy5ncm91cHMpIHtcbiAgICAgICAgbmV3IGNvZ25pdG8uQ2ZuVXNlclBvb2xHcm91cCh0aGlzLCBgR3JvdXAke2dyb3VwfWAsIHtcbiAgICAgICAgICB1c2VyUG9vbElkOiB0aGlzLnVzZXJQb29sLnVzZXJQb29sSWQsXG4gICAgICAgICAgZ3JvdXBOYW1lOiBncm91cCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gT3B0aW9uYWwgYWR2YW5jZWQtc2VjdXJpdHkgcmlzayBjb25maWd1cmF0aW9uIChMMSkuXG4gICAgaWYgKHByb3BzLmFjY291bnRUYWtlb3ZlclJpc2tDb25maWd1cmF0aW9uIHx8IHByb3BzLmNvbXByb21pc2VkQ3JlZGVudGlhbHNSaXNrQ29uZmlndXJhdGlvbikge1xuICAgICAgbmV3IGNvZ25pdG8uQ2ZuVXNlclBvb2xSaXNrQ29uZmlndXJhdGlvbkF0dGFjaG1lbnQodGhpcywgJ1Jpc2tDb25maWcnLCB7XG4gICAgICAgIHVzZXJQb29sSWQ6IHRoaXMudXNlclBvb2wudXNlclBvb2xJZCxcbiAgICAgICAgY2xpZW50SWQ6ICdBTEwnLFxuICAgICAgICBhY2NvdW50VGFrZW92ZXJSaXNrQ29uZmlndXJhdGlvbjogcHJvcHMuYWNjb3VudFRha2VvdmVyUmlza0NvbmZpZ3VyYXRpb24sXG4gICAgICAgIGNvbXByb21pc2VkQ3JlZGVudGlhbHNSaXNrQ29uZmlndXJhdGlvbjogcHJvcHMuY29tcHJvbWlzZWRDcmVkZW50aWFsc1Jpc2tDb25maWd1cmF0aW9uLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy51c2VyUG9vbENsaWVudHMgPSB7fTtcbiAgICBmb3IgKGNvbnN0IHNwZWMgb2YgcHJvcHMuYXBwQ2xpZW50cykge1xuICAgICAgY29uc3QgY2xpZW50ID0gbmV3IGNvZ25pdG8uVXNlclBvb2xDbGllbnQodGhpcywgYENsaWVudCR7c3BlYy5rZXl9YCwge1xuICAgICAgICB1c2VyUG9vbDogdGhpcy51c2VyUG9vbCxcbiAgICAgICAgZ2VuZXJhdGVTZWNyZXQ6IHNwZWMuZ2VuZXJhdGVTZWNyZXQgPz8gZmFsc2UsXG4gICAgICAgIGF1dGhGbG93czogcHJvcHMucGFzc3dvcmRsZXNzRW1haWxPdHBcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgIC8vIFBhc3N3b3JkbGVzczogZW5hYmxlIGNob2ljZS1iYXNlZCBBTExPV19VU0VSX0FVVEggYW5kIERST1AgdXNlclNycCBzbyB0aGVcbiAgICAgICAgICAgIC8vIHBhc3N3b3JkIGNoYWxsZW5nZSBjYW5ub3QgYmUgaW5pdGlhdGVkIHRocm91Z2ggdGhpcyBjbGllbnQg4oCUIGV2ZW4gYnkgYVxuICAgICAgICAgICAgLy8gZGlyZWN0IEFQSSBjYWxsLiBQQVNTV09SRCBzdGF5cyBhIHBvb2wgZmFjdG9yIChDb2duaXRvJ3MgcnVsZSkgYnV0IGlzXG4gICAgICAgICAgICAvLyB1bnJlYWNoYWJsZSB2aWEgdGhlIHN0b3JlZnJvbnQgY2xpZW50LlxuICAgICAgICAgICAgdXNlcjogdHJ1ZSxcbiAgICAgICAgICAgIGN1c3RvbTogcHJvcHMuZW5hYmxlQ3VzdG9tQXV0aEZsb3cgPz8gZmFsc2UsXG4gICAgICAgICAgfVxuICAgICAgICAgIDoge1xuICAgICAgICAgICAgdXNlclNycDogdHJ1ZSxcbiAgICAgICAgICAgIGN1c3RvbTogcHJvcHMuZW5hYmxlQ3VzdG9tQXV0aEZsb3cgPz8gZmFsc2UsXG4gICAgICAgICAgICAvLyB1c2VyUGFzc3dvcmQgLyBhZG1pblVzZXJQYXNzd29yZCBpbnRlbnRpb25hbGx5IG9taXR0ZWQgKGRpc2FibGVkKS5cbiAgICAgICAgICB9LFxuICAgICAgICBvQXV0aDoge1xuICAgICAgICAgIGZsb3dzOiB7IGF1dGhvcml6YXRpb25Db2RlR3JhbnQ6IHRydWUgfSxcbiAgICAgICAgICBzY29wZXM6IFtjb2duaXRvLk9BdXRoU2NvcGUuT1BFTklELCBjb2duaXRvLk9BdXRoU2NvcGUuRU1BSUwsIGNvZ25pdG8uT0F1dGhTY29wZS5QUk9GSUxFXSxcbiAgICAgICAgICBjYWxsYmFja1VybHM6IHNwZWMuY2FsbGJhY2tVcmxzLFxuICAgICAgICAgIGxvZ291dFVybHM6IHNwZWMubG9nb3V0VXJscyxcbiAgICAgICAgfSxcbiAgICAgICAgc3VwcG9ydGVkSWRlbnRpdHlQcm92aWRlcnM6IHNwZWMuc3VwcG9ydGVkSWRlbnRpdHlQcm92aWRlcnMgPz8gW2NvZ25pdG8uVXNlclBvb2xDbGllbnRJZGVudGl0eVByb3ZpZGVyLkNPR05JVE9dLFxuICAgICAgICBwcmV2ZW50VXNlckV4aXN0ZW5jZUVycm9yczogdHJ1ZSxcbiAgICAgICAgZW5hYmxlVG9rZW5SZXZvY2F0aW9uOiB0cnVlLFxuICAgICAgICBhY2Nlc3NUb2tlblZhbGlkaXR5OiBwcm9wcy5hY2Nlc3NUb2tlblZhbGlkaXR5ID8/IGNvcmUuRHVyYXRpb24uaG91cnMoMSksXG4gICAgICAgIGlkVG9rZW5WYWxpZGl0eTogcHJvcHMuaWRUb2tlblZhbGlkaXR5ID8/IGNvcmUuRHVyYXRpb24uaG91cnMoMSksXG4gICAgICAgIHJlZnJlc2hUb2tlblZhbGlkaXR5OiBwcm9wcy5yZWZyZXNoVG9rZW5WYWxpZGl0eSA/PyBjb3JlLkR1cmF0aW9uLmRheXMoMzApLFxuICAgICAgfSk7XG4gICAgICB0aGlzLnVzZXJQb29sQ2xpZW50c1tzcGVjLmtleV0gPSBjbGllbnQ7XG4gICAgfVxuICAgIHRoaXMudXNlclBvb2xDbGllbnQgPSB0aGlzLnVzZXJQb29sQ2xpZW50c1twcm9wcy5hcHBDbGllbnRzWzBdLmtleV07XG5cbiAgICB0aGlzLnVzZXJQb29sRG9tYWluID0gdGhpcy51c2VyUG9vbC5hZGREb21haW4oJ0NvZ25pdG9Eb21haW4nLCB7XG4gICAgICBjb2duaXRvRG9tYWluOiB7IGRvbWFpblByZWZpeDogcHJvcHMuY29nbml0b0RvbWFpblByZWZpeCB9LFxuICAgIH0pO1xuICAgIHRoaXMuY29nbml0b0RvbWFpblVybCA9IGAke3Byb3BzLmNvZ25pdG9Eb21haW5QcmVmaXh9LmF1dGguJHtjb3JlLlN0YWNrLm9mKHRoaXMpLnJlZ2lvbn0uYW1hem9uY29nbml0by5jb21gO1xuXG4gICAgaWYgKHByb3BzLmlkZW50aXR5UG9vbCkge1xuICAgICAgY29uc3QgaWRwID0gcHJvcHMuaWRlbnRpdHlQb29sO1xuICAgICAgdGhpcy5pZGVudGl0eVBvb2wgPSBuZXcgY29nbml0by5DZm5JZGVudGl0eVBvb2wodGhpcywgJ0lkZW50aXR5UG9vbCcsIHtcbiAgICAgICAgYWxsb3dVbmF1dGhlbnRpY2F0ZWRJZGVudGl0aWVzOiBpZHAuYWxsb3dVbmF1dGhlbnRpY2F0ZWRJZGVudGl0aWVzID8/IGZhbHNlLFxuICAgICAgICBjb2duaXRvSWRlbnRpdHlQcm92aWRlcnM6IHByb3BzLmFwcENsaWVudHMubWFwKHNwZWMgPT4gKHtcbiAgICAgICAgICBjbGllbnRJZDogdGhpcy51c2VyUG9vbENsaWVudHNbc3BlYy5rZXldLnVzZXJQb29sQ2xpZW50SWQsXG4gICAgICAgICAgcHJvdmlkZXJOYW1lOiB0aGlzLnVzZXJQb29sLnVzZXJQb29sUHJvdmlkZXJOYW1lLFxuICAgICAgICAgIHNlcnZlclNpZGVUb2tlbkNoZWNrOiB0cnVlLFxuICAgICAgICB9KSksXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5hdXRoZW50aWNhdGVkUm9sZSA9IG5ldyBpYW0uUm9sZSh0aGlzLCAnQXV0aGVudGljYXRlZFJvbGUnLCB7XG4gICAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5GZWRlcmF0ZWRQcmluY2lwYWwoXG4gICAgICAgICAgJ2NvZ25pdG8taWRlbnRpdHkuYW1hem9uYXdzLmNvbScsXG4gICAgICAgICAge1xuICAgICAgICAgICAgJ1N0cmluZ0VxdWFscyc6IHsgJ2NvZ25pdG8taWRlbnRpdHkuYW1hem9uYXdzLmNvbTphdWQnOiB0aGlzLmlkZW50aXR5UG9vbC5yZWYgfSxcbiAgICAgICAgICAgICdGb3JBbnlWYWx1ZTpTdHJpbmdMaWtlJzogeyAnY29nbml0by1pZGVudGl0eS5hbWF6b25hd3MuY29tOmFtcic6ICdhdXRoZW50aWNhdGVkJyB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgJ3N0czpBc3N1bWVSb2xlV2l0aFdlYklkZW50aXR5JyxcbiAgICAgICAgKSxcbiAgICAgICAgbWFuYWdlZFBvbGljaWVzOiBpZHAuYXV0aGVudGljYXRlZFJvbGVNYW5hZ2VkUG9saWNpZXMsXG4gICAgICB9KTtcblxuICAgICAgbmV3IGNvZ25pdG8uQ2ZuSWRlbnRpdHlQb29sUm9sZUF0dGFjaG1lbnQodGhpcywgJ0lkZW50aXR5UG9vbFJvbGVzJywge1xuICAgICAgICBpZGVudGl0eVBvb2xJZDogdGhpcy5pZGVudGl0eVBvb2wucmVmLFxuICAgICAgICByb2xlczogeyBhdXRoZW50aWNhdGVkOiB0aGlzLmF1dGhlbnRpY2F0ZWRSb2xlLnJvbGVBcm4gfSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBBQkFDOiBtYXAgY2xhaW1zIHRvIHByaW5jaXBhbCB0YWdzIG9uIHRoZSB1c2VyLXBvb2wgcHJvdmlkZXIuXG4gICAgICBpZiAoaWRwLnByaW5jaXBhbFRhZ3MgJiYgT2JqZWN0LmtleXMoaWRwLnByaW5jaXBhbFRhZ3MpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgbmV3IGNvZ25pdG8uQ2ZuSWRlbnRpdHlQb29sUHJpbmNpcGFsVGFnKHRoaXMsICdQcmluY2lwYWxUYWdzJywge1xuICAgICAgICAgIGlkZW50aXR5UG9vbElkOiB0aGlzLmlkZW50aXR5UG9vbC5yZWYsXG4gICAgICAgICAgaWRlbnRpdHlQcm92aWRlck5hbWU6IHRoaXMudXNlclBvb2wudXNlclBvb2xQcm92aWRlck5hbWUsXG4gICAgICAgICAgdXNlRGVmYXVsdHM6IGZhbHNlLFxuICAgICAgICAgIHByaW5jaXBhbFRhZ3M6IGlkcC5wcmluY2lwYWxUYWdzLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|