A técnica de DUPLICATE pode ser executada de diferentes modos, cabendo ao DBA decidir-se pelo modo mais adequado, levando em conta o cenário em que está contido. Neste exemplo, demonstraremos o modo “Active Database Duplication”. O Active Database Duplication é um modo de executar um duplicate database, onde não é necessário haver um backup prévio (Backup RMAN existente) para execução da tarefa, assim o RMAN duplica os database files localizado em um host origem (SOURCE HOST), diretamente de qualquer database em estado OPEN ou MOUNT, transferindo suas “image copie” ou “backup set” gerados no momento da execução da tarefa para o host destino (AUXILIARY HOST), onde serão usados para construir o database duplicado.

Antes de iniciar o passo a passo para execução do “Active Database Duplication” é importante estarmos familiarizados com as nomenclaturas dos diversos componentes envolvidas no processo de duplicate.

Source Host: Maquina origem onde portam os database files que serão duplicados.

Auxiliary Host: Maquina destino que receberá os database files do Source Host.

Source Database Instance: Instance origem no processo de duplicate (Está localizada no Source Host e pertence ao Source Database)

Auxiliary Database Instance: Instance destino no processo de duplicate (Está localizada no Auxiliary Host e pertence ao Auxiliary Database)

Source Database: Database que será duplicado (Database Origem).

Auxiliary Database: Clone do Source Database (Database Duplicado).

Passo a passo para execução do “Active Database Duplication”
Considere o cenário abaixo:

Passo 1) Preparação do ambiente para executar “Active Database Duplication”

  • Configuração da Auxiliary Database Instance.

OBS.: Em um cenário de “Active Database Duplication”, um banco de dados está sendo duplicado, o produto final desta duplicação é um clone do database target (Source Database), com isso é possível deduzir que o database target (Source Database) já existe e está funcional.

A database instance é uma estrutura de memória criada a partir de um dos arquivos de parâmetros (parameter file) pfile ou spfile, essa estrutura é responsável pelo gerenciamento dos database files. O arquivo de parâmetros (parameter file) traz consigo uma série de importantes informações tais como localização do controlfile (control_files), destino dos arquivos de auditoria (audit_file_dest) e FRA (db_recovery_file_dest), esses parâmetros possuem como valor caminho de diretórios, essas estruturas devem ser criadas no Auxiliary Host, bem como, todos os diretórios continhos em ADR BASE e ADR HOME ($ADR_BASE/diag/rdbms/{DB-name}/{SID}/). Obviamente, a mudança de nomenclatura de algum diretório pertencente a esta estrutura é uma opção do DBA, sendo condicionado pela alteração do valor dos parâmetros do parameter file (arquivo de parâmetros) e o nome do database instance (ORACLE_SID).

OBS.: Para verificar a estrutura de diretórios do ADR, basta consultar a view V$DIAG_INFO.

É necessários transferir um dos arquivos de parâmetros (parameter file), localizado no Source Host referente a Source Database Instance para o Auxiliary Host referente a Auxiliary Database Instance, nesta etapa, estamos condicionando o Oracle para que seja capaz de criar a estrutura de memória (database instance) responsável pelo gerencialmente dos database files.

Uma vez que o pfile esteja em $ORACLE_HOME/dbs no Auxiliary Host é necessário ajusta-lo, com o intuito organizacional, modificando a nomenclatura da estrutura de diretórios, substituindo o nível, cuja string é CDB1 por STBY.

Parâmetros alterados no PFILE
Ajustando estrutura de diretório do parâmetro audit_file_dest com a nomenclatura referente ao SID do Auxiliary Database

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”Ki5hdWRpdF9maWxlX2Rlc3Q94oCZL29yYWNsZS9hcHAvcHJvZHVjdC9hZG1pbi9DREIxL2FkdW1w4oCZCiouYXVkaXRfZmlsZV9kZXN0PeKAmS9vcmFjbGUvYXBwL3Byb2R1Y3QvYWRtaW4vU1RCWS9hZHVtcOKAmQ==” hover_enabled=”0″]Ki5hdWRpdF9maWxlX2Rlc3Q94oCZL29yYWNsZS9hcHAvcHJvZHVjdC9hZG1pbi9DREIxL2FkdW1w4oCZCiouYXVkaXRfZmlsZV9kZXN0PeKAmS9vcmFjbGUvYXBwL3Byb2R1Y3QvYWRtaW4vU1RCWS9hZHVtcOKAmQ==[/et_pb_dmb_code_snippet]

Ajustando estrutura de diretório onde estará o controlfile com a nomenclatura referente ao SID do Auxiliary Database

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”Ki5jb250cm9sX2ZpbGVzPeKAmS9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9DREIxL2NvbnRyb2wwMS5jdGzigJkKKi5jb250cm9sX2ZpbGVzPeKAmS9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL2NvbnRyb2wwMS5jdGzigJk=” hover_enabled=”0″]Ki5jb250cm9sX2ZpbGVzPeKAmS9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9DREIxL2NvbnRyb2wwMS5jdGzigJkKKi5jb250cm9sX2ZpbGVzPeKAmS9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL2NvbnRyb2wwMS5jdGzigJk=[/et_pb_dmb_code_snippet]

Ajustando estrutura de diretório onde estará a FRA com a nomenclatura referente ao SID do Auxiliary Database

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”Ki5kYl9yZWNvdmVyeV9maWxlX2Rlc3Q94oCZL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL0NEQjEvRlJB4oCZCiouZGJfcmVjb3ZlcnlfZmlsZV9kZXN0PeKAmS9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL0ZSQeKAmQ==” hover_enabled=”0″]Ki5kYl9yZWNvdmVyeV9maWxlX2Rlc3Q94oCZL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL0NEQjEvRlJB4oCZCiouZGJfcmVjb3ZlcnlfZmlsZV9kZXN0PeKAmS9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL0ZSQeKAmQ==[/et_pb_dmb_code_snippet]

Depois de ajustado é imprescindível que esses diretórios existam no filesystem, portanto é necessário cria-los.

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”bWtkaXIgLXAgL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvRlJBLwpta2RpciAtcCAvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS8KbWtkaXIgLXAgL29yYWNsZS9hcHAvcHJvZHVjdC9hZG1pbi9TVEJZL2FkdW1wLw==” hover_enabled=”0″]bWtkaXIgLXAgL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvRlJBLwpta2RpciAtcCAvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS8KbWtkaXIgLXAgL29yYWNsZS9hcHAvcHJvZHVjdC9hZG1pbi9TVEJZL2FkdW1wLw==[/et_pb_dmb_code_snippet]

OBS.: É impreterível que todos os diretórios referenciados no pfile esteja criados.

Conforme descrito anteriormente, a database instance é uma estrutura de memória para gerenciar o database, portanto também se faz necessários a criação da estrutura de diretórios para os datafiles, seguindo o mesmo intuito organizacional, a nomenclatura da estrutura de diretórios, também será substituída no nível, cuja string é CDB1 por STBY. Faremos o levantamento dessa estrutura (diretórios), consultando o campo NAME da view V$DATAFILE.

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”c2VsZWN0IE5BTUUgZnJvbSB2JGRhdGFmaWxlICA7ICA=” hover_enabled=”0″]c2VsZWN0IE5BTUUgZnJvbSB2JGRhdGFmaWxlICA7ICA=[/et_pb_dmb_code_snippet]

Criação da estrutura de diretório onde estarão os datafiles.

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”bWtkaXIgLXAgL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvCm1rZGlyIC1wIC9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3BkYnNlZWQvCm1rZGlyIC1wIC9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL1BEQjEv” hover_enabled=”0″]bWtkaXIgLXAgL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvCm1rZGlyIC1wIC9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3BkYnNlZWQvCm1rZGlyIC1wIC9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL1BEQjEv[/et_pb_dmb_code_snippet]

O duplicate irá depositar os datafiles nos mesmos lugares em que originalmente estão, uma vez que, a localização dos datafiles estão catalogados no controlfile, que por sua vez é um dos protagonistas em uma operação de restore. Na execução do duplicate, veremos nas logs geradas, que esta operação nada mais é que um restore/recover completo do banco de dados de forma automatizada em uma única operação. Com o intuito organizacional, iremos mudar a nomenclatura da estrutura de diretórios, trocando CDB1 por STBY, para tanto, utilizaremos dois parâmetros, db_file_name_convert e log_file_name_convert, que deve ser incluídos no pfile localizado no Auxiliary host (Lembre-se que após incluído é necessário um shutdown/startup na instance).

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”Ki5kYl9maWxlX25hbWVfY29udmVydD0oJy9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9DREIxLycsJy9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZLycpCioubG9nX2ZpbGVfbmFtZV9jb252ZXJ0PSgnL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL0NEQjEvJywnL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvJyk=” hover_enabled=”0″]Ki5kYl9maWxlX25hbWVfY29udmVydD0oJy9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9DREIxLycsJy9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZLycpCioubG9nX2ZpbGVfbmFtZV9jb252ZXJ0PSgnL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL0NEQjEvJywnL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvJyk=[/et_pb_dmb_code_snippet]

A versão ajustada do pfile é descrito abaixo:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”ICouYXVkaXRfZmlsZV9kZXN0PScvb3JhY2xlL2FwcC9wcm9kdWN0L2FkbWluL1NUQlkvYWR1bXAnCiAgICouYXVkaXRfdHJhaWw9J2RiJwogICAqLmNvbXBhdGlibGU9JzEyLjEuMC4yLjAnCiAgICouY29udHJvbF9maWxlcz0nL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvY29udHJvbDAxLmN0bCcKICAgKi5kYl9ibG9ja19zaXplPTgxOTIKICAgKi5kYl9kb21haW49JycKICAgKi5kYl9uYW1lPSdDREIxJwogICAqLmRiX3JlY292ZXJ5X2ZpbGVfZGVzdD0nL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvRlJBJwogICAqLmRiX3JlY292ZXJ5X2ZpbGVfZGVzdF9zaXplPTQ4MTVtCiAgICouZGlhZ25vc3RpY19kZXN0PScvb3JhY2xlL2FwcC9wcm9kdWN0JwogICAqLmRpc3BhdGNoZXJzPScoUFJPVE9DT0w9VENQKSAgKFNFUlZJQ0U9Q0RCMVhEQiknCiAgICouZW5hYmxlX3BsdWdnYWJsZV9kYXRhYmFzZT10cnVlCiAgICoubG9nX2FyY2hpdmVfZGVzdF8xPSdMT0NBVElPTj0vb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9GUkEnCiAgICoubG9nX2FyY2hpdmVfZm9ybWF0PScldF8lc18lci5kYmYnCiAgICoub3Blbl9jdXJzb3JzPTMwMAogICAqLnBnYV9hZ2dyZWdhdGVfdGFyZ2V0PTE5MG0KICAgKi5wcm9jZXNzZXM9MzAwCiAgICoucmVtb3RlX2xvZ2luX3Bhc3N3b3JkZmlsZT0nRVhDTFVTSVZFJwogICAqLnJlbW90ZV9vc19hdXRoZW50PVRSVUUKICAgKi5yZW1vdGVfb3Nfcm9sZXM9VFJVRQogICAqLnNnYV90YXJnZXQ9NTcwbQogICAqLnVuZG9fdGFibGVzcGFjZT0nVU5ET1RCUzEnCiAgICouZGJfZmlsZV9uYW1lX2NvbnZlcnQ9KCcvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvQ0RCMS8nLCcvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS8nKQogICAqLmxvZ19maWxlX25hbWVfY29udmVydD0oJy9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9DREIxLycsJy9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZLycp” hover_enabled=”0″]ICouYXVkaXRfZmlsZV9kZXN0PScvb3JhY2xlL2FwcC9wcm9kdWN0L2FkbWluL1NUQlkvYWR1bXAnCiAgICouYXVkaXRfdHJhaWw9J2RiJwogICAqLmNvbXBhdGlibGU9JzEyLjEuMC4yLjAnCiAgICouY29udHJvbF9maWxlcz0nL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvY29udHJvbDAxLmN0bCcKICAgKi5kYl9ibG9ja19zaXplPTgxOTIKICAgKi5kYl9kb21haW49JycKICAgKi5kYl9uYW1lPSdDREIxJwogICAqLmRiX3JlY292ZXJ5X2ZpbGVfZGVzdD0nL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvRlJBJwogICAqLmRiX3JlY292ZXJ5X2ZpbGVfZGVzdF9zaXplPTQ4MTVtCiAgICouZGlhZ25vc3RpY19kZXN0PScvb3JhY2xlL2FwcC9wcm9kdWN0JwogICAqLmRpc3BhdGNoZXJzPScoUFJPVE9DT0w9VENQKSAgKFNFUlZJQ0U9Q0RCMVhEQiknCiAgICouZW5hYmxlX3BsdWdnYWJsZV9kYXRhYmFzZT10cnVlCiAgICoubG9nX2FyY2hpdmVfZGVzdF8xPSdMT0NBVElPTj0vb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9GUkEnCiAgICoubG9nX2FyY2hpdmVfZm9ybWF0PScldF8lc18lci5kYmYnCiAgICoub3Blbl9jdXJzb3JzPTMwMAogICAqLnBnYV9hZ2dyZWdhdGVfdGFyZ2V0PTE5MG0KICAgKi5wcm9jZXNzZXM9MzAwCiAgICoucmVtb3RlX2xvZ2luX3Bhc3N3b3JkZmlsZT0nRVhDTFVTSVZFJwogICAqLnJlbW90ZV9vc19hdXRoZW50PVRSVUUKICAgKi5yZW1vdGVfb3Nfcm9sZXM9VFJVRQogICAqLnNnYV90YXJnZXQ9NTcwbQogICAqLnVuZG9fdGFibGVzcGFjZT0nVU5ET1RCUzEnCiAgICouZGJfZmlsZV9uYW1lX2NvbnZlcnQ9KCcvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvQ0RCMS8nLCcvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS8nKQogICAqLmxvZ19maWxlX25hbWVfY29udmVydD0oJy9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9DREIxLycsJy9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZLycp[/et_pb_dmb_code_snippet]

Para finalizar a criação de todas as estruturas de diretórios, criaremos a estrutura de ADR (Automatic Diagnostics Repository).

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”bWtkaXIgLXAgL29yYWNsZS9hcHAvcHJvZHVjdC9kaWFnL3JkYm1zL2NkYjEvU1RCWQpta2RpciAtcCAvb3JhY2xlL2FwcC9wcm9kdWN0L2RpYWcvcmRibXMvY2RiMS9TVEJZL3RyYWNlCm1rZGlyIC1wIC9vcmFjbGUvYXBwL3Byb2R1Y3QvZGlhZy9yZGJtcy9jZGIxL1NUQlkvYWxlcnQKbWtkaXIgLXAgL29yYWNsZS9hcHAvcHJvZHVjdC9kaWFnL3JkYm1zL2NkYjEvU1RCWS9pbmNpZGVudApta2RpciAtcCAvb3JhY2xlL2FwcC9wcm9kdWN0L2RpYWcvcmRibXMvY2RiMS9TVEJZL2NkdW1wCm1rZGlyIC1wIC9vcmFjbGUvYXBwL3Byb2R1Y3QvZGlhZy9yZGJtcy9jZGIxL1NUQlkvaG0KbWtkaXIgLXAgL29yYWNsZS9hcHAvcHJvZHVjdC9kaWFnL3JkYm1zL2NkYjEvU1RCWS90cmFjZS8KbWtkaXIgLXAgL29yYWNsZS9hcHAvcHJvZHVjdC9kaWFnL3JkYm1zL2NkYjEvU1RCWS9pbmNwa2cKbWtkaXIgLXAgL29yYWNsZS9hcHAvcHJvZHVjdC9kaWFnL3JkYm1zL2NkYjEvU1RCWS9pcgpta2RpciAtcCAvb3JhY2xlL2FwcC9wcm9kdWN0L2RpYWcvcmRibXMvY2RiMS9TVEJZL2xjawpta2RpciAtcCAvb3JhY2xlL2FwcC9wcm9kdWN0L2RpYWcvcmRibXMvY2RiMS9TVEJZL2xvZwpta2RpciAtcCAvb3JhY2xlL2FwcC9wcm9kdWN0L2RpYWcvcmRibXMvY2RiMS9TVEJZL21ldGFkYXRhCm1rZGlyIC1wIC9vcmFjbGUvYXBwL3Byb2R1Y3QvZGlhZy9yZGJtcy9jZGIxL1NUQlkvbWV0YWRhdGFfZGdpZgpta2RpciAtcCAvb3JhY2xlL2FwcC9wcm9kdWN0L2RpYWcvcmRibXMvY2RiMS9TVEJZL21ldGFkYXRhX3B2Cm1rZGlyIC1wIC9vcmFjbGUvYXBwL3Byb2R1Y3QvZGlhZy9yZGJtcy9jZGIxL1NUQlkvc3RhZ2UKbWtkaXIgLXAgL29yYWNsZS9hcHAvcHJvZHVjdC9kaWFnL3JkYm1zL2NkYjEvU1RCWS9zd2VlcA==” hover_enabled=”0″]bWtkaXIgLXAgL29yYWNsZS9hcHAvcHJvZHVjdC9kaWFnL3JkYm1zL2NkYjEvU1RCWQpta2RpciAtcCAvb3JhY2xlL2FwcC9wcm9kdWN0L2RpYWcvcmRibXMvY2RiMS9TVEJZL3RyYWNlCm1rZGlyIC1wIC9vcmFjbGUvYXBwL3Byb2R1Y3QvZGlhZy9yZGJtcy9jZGIxL1NUQlkvYWxlcnQKbWtkaXIgLXAgL29yYWNsZS9hcHAvcHJvZHVjdC9kaWFnL3JkYm1zL2NkYjEvU1RCWS9pbmNpZGVudApta2RpciAtcCAvb3JhY2xlL2FwcC9wcm9kdWN0L2RpYWcvcmRibXMvY2RiMS9TVEJZL2NkdW1wCm1rZGlyIC1wIC9vcmFjbGUvYXBwL3Byb2R1Y3QvZGlhZy9yZGJtcy9jZGIxL1NUQlkvaG0KbWtkaXIgLXAgL29yYWNsZS9hcHAvcHJvZHVjdC9kaWFnL3JkYm1zL2NkYjEvU1RCWS90cmFjZS8KbWtkaXIgLXAgL29yYWNsZS9hcHAvcHJvZHVjdC9kaWFnL3JkYm1zL2NkYjEvU1RCWS9pbmNwa2cKbWtkaXIgLXAgL29yYWNsZS9hcHAvcHJvZHVjdC9kaWFnL3JkYm1zL2NkYjEvU1RCWS9pcgpta2RpciAtcCAvb3JhY2xlL2FwcC9wcm9kdWN0L2RpYWcvcmRibXMvY2RiMS9TVEJZL2xjawpta2RpciAtcCAvb3JhY2xlL2FwcC9wcm9kdWN0L2RpYWcvcmRibXMvY2RiMS9TVEJZL2xvZwpta2RpciAtcCAvb3JhY2xlL2FwcC9wcm9kdWN0L2RpYWcvcmRibXMvY2RiMS9TVEJZL21ldGFkYXRhCm1rZGlyIC1wIC9vcmFjbGUvYXBwL3Byb2R1Y3QvZGlhZy9yZGJtcy9jZGIxL1NUQlkvbWV0YWRhdGFfZGdpZgpta2RpciAtcCAvb3JhY2xlL2FwcC9wcm9kdWN0L2RpYWcvcmRibXMvY2RiMS9TVEJZL21ldGFkYXRhX3B2Cm1rZGlyIC1wIC9vcmFjbGUvYXBwL3Byb2R1Y3QvZGlhZy9yZGJtcy9jZGIxL1NUQlkvc3RhZ2UKbWtkaXIgLXAgL29yYWNsZS9hcHAvcHJvZHVjdC9kaWFnL3JkYm1zL2NkYjEvU1RCWS9zd2VlcA==[/et_pb_dmb_code_snippet]
  • Configuração de conectividade entre Source x Auxiliary.

O procedimento de “Active Database Duplication”, inclui a conectividade entre Source Database Instance e Auxiliary Database Instance, uma vez que o RMAN necessita de uma integração entre as instance para executar o processo de clonagem de forma automatizada do database. É mandatório que a Auxiliary Database Instance esteja em estado nomount (status STARTED na view V$INSTANCE) quando o “Active Database Duplication” iniciar, por esta razão é necessário uma registo de serviço estático no listener (Static Service Registration), possibilitando um logon remoto com a instance em qualquer estado (DOWN, NOMOUNT, MOUNT ou OPEN).
Veja abaixo, o conteúdo do arquivo $ORACLE_HOME/network/admin/listener.ora e sua respectiva string de conexão (Entrada no TNSNAMES.ORA), o serviço estático no listener (Static Service Registration) é representado pela(as) entrada(as) em SID_LIST_LISTENER.

Source Host
$ORACLE_HOME/network/admin/listener.ora

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”TElTVEVORVI9CiAgIChERVNDUklQVElPTj0KICAgKEFERFJFU1NfTElTVD0KICAgKEFERFJFU1M9KFBST1RPQ09MPXRjcCkoSE9TVD1wcmltYXJ5KShQT1JUPTE1MjEpKQogICApCiApClNJRF9MSVNUX0xJU1RFTkVSPQogICAoU0lEX0xJU1Q9CiAgIChTSURfREVTQz0KICAgKEdMT0JBTF9EQk5BTUU9Q0RCMSkKICAgKE9SQUNMRV9IT01FPS9vcmFjbGUvYXBwL3Byb2R1Y3QvMTIuMSkKICAgKFNJRF9OQU1FPUNEQjEpCiAgICkKICk=” hover_enabled=”0″]TElTVEVORVI9CiAgIChERVNDUklQVElPTj0KICAgKEFERFJFU1NfTElTVD0KICAgKEFERFJFU1M9KFBST1RPQ09MPXRjcCkoSE9TVD1wcmltYXJ5KShQT1JUPTE1MjEpKQogICApCiApClNJRF9MSVNUX0xJU1RFTkVSPQogICAoU0lEX0xJU1Q9CiAgIChTSURfREVTQz0KICAgKEdMT0JBTF9EQk5BTUU9Q0RCMSkKICAgKE9SQUNMRV9IT01FPS9vcmFjbGUvYXBwL3Byb2R1Y3QvMTIuMSkKICAgKFNJRF9OQU1FPUNEQjEpCiAgICkKICk=[/et_pb_dmb_code_snippet]

$ORACLE_HOME/network/admin/tnsnames.ora

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”REJfU09VUkNFID0KICAgKERFU0NSSVBUSU9OID0KICAgKEFERFJFU1MgPSAoUFJPVE9DT0wgPSBUQ1ApKEhPU1QgPSAgcHJpbWFyeSkoUE9SVCA9IDE1MjEpKQogICAoQ09OTkVDVF9EQVRBID0KICAgKFNFUlZFUiA9IERFRElDQVRFRCkKICAgKHNpZCA9IENEQjEpCiAgICkKICAgKQ==” hover_enabled=”0″]REJfU09VUkNFID0KICAgKERFU0NSSVBUSU9OID0KICAgKEFERFJFU1MgPSAoUFJPVE9DT0wgPSBUQ1ApKEhPU1QgPSAgcHJpbWFyeSkoUE9SVCA9IDE1MjEpKQogICAoQ09OTkVDVF9EQVRBID0KICAgKFNFUlZFUiA9IERFRElDQVRFRCkKICAgKHNpZCA9IENEQjEpCiAgICkKICAgKQ==[/et_pb_dmb_code_snippet]

Auxiliary Host
$ORACLE_HOME/network/admin/listener.ora

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”ICAgTElTVEVORVI9CiAgIChERVNDUklQVElPTj0KICAgKEFERFJFU1NfTElTVD0KICAgKEFERFJFU1M9KFBST1RPQ09MPXRjcCkoSE9TVD1zdGFuZGJ5KShQT1JUPTE1MjEpKQogICApCiApClNJRF9MSVNUX0xJU1RFTkVSPQogICAoU0lEX0xJU1Q9CiAgIChTSURfREVTQz0KICAgKEdMT0JBTF9EQk5BTUU9Q0RCMSkKICAgKE9SQUNMRV9IT01FPS9vcmFjbGUvYXBwL3Byb2R1Y3QvMTIuMSkKICAgKFNJRF9OQU1FPVNUQlkpCiAgICkKICk=” hover_enabled=”0″]ICAgTElTVEVORVI9CiAgIChERVNDUklQVElPTj0KICAgKEFERFJFU1NfTElTVD0KICAgKEFERFJFU1M9KFBST1RPQ09MPXRjcCkoSE9TVD1zdGFuZGJ5KShQT1JUPTE1MjEpKQogICApCiApClNJRF9MSVNUX0xJU1RFTkVSPQogICAoU0lEX0xJU1Q9CiAgIChTSURfREVTQz0KICAgKEdMT0JBTF9EQk5BTUU9Q0RCMSkKICAgKE9SQUNMRV9IT01FPS9vcmFjbGUvYXBwL3Byb2R1Y3QvMTIuMSkKICAgKFNJRF9OQU1FPVNUQlkpCiAgICkKICk=[/et_pb_dmb_code_snippet]

$ORACLE_HOME/network/admin/tnsnames.ora

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”REJfQVVYSUxJQVJZID0KICAgKERFU0NSSVBUSU9OID0KICAgKEFERFJFU1MgPSAoUFJPVE9DT0wgPSBUQ1ApKEhPU1QgPSAgc3RhbmRieSkoUE9SVCA9IDE1MjEpKQogICAoQ09OTkVDVF9EQVRBID0KICAgKFNFUlZFUiA9IERFRElDQVRFRCkKICAgKHNpZCA9IFNUQlkpCiAgICkKICk=” hover_enabled=”0″]REJfQVVYSUxJQVJZID0KICAgKERFU0NSSVBUSU9OID0KICAgKEFERFJFU1MgPSAoUFJPVE9DT0wgPSBUQ1ApKEhPU1QgPSAgc3RhbmRieSkoUE9SVCA9IDE1MjEpKQogICAoQ09OTkVDVF9EQVRBID0KICAgKFNFUlZFUiA9IERFRElDQVRFRCkKICAgKHNpZCA9IFNUQlkpCiAgICkKICk=[/et_pb_dmb_code_snippet]

Finalizado a configuração de conectividade, é necessário ajustar a autenticação do acesso remoto entre Source Database Instance e Auxiliary Database Instance, ou seja, fazer com que o RMAN se conecte com a string de conexão DB_SOURCE e DB_AUXILIARY, que deveram estar no TNSNAMES.ORA de ambos os host (SOURCE e AUXILIARY), para tanto é necessário que os arquivo de senha (Password File) estejam criados em ambos os hosts, utilizando a mesma senha para o usuário sys (Utilizaremos o usuário sys para executar o duplicate).

Para criar o arquivo de senha (Password File), utilize o comando abaixo:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”b3JhcHdkICBmaWxlPSRPUkFDTEVfSE9NRS9kYnMvb3JhcHcgcGFzc3dvcmQ9PEVTQ09MSEFfVU1fU0VOSEE+IGVudHJpZXM9MTAwICBmb3JjZT15ICBpZ25vcmVjYXNlPVk=” hover_enabled=”0″]b3JhcHdkICBmaWxlPSRPUkFDTEVfSE9NRS9kYnMvb3JhcHcgcGFzc3dvcmQ9PEVTQ09MSEFfVU1fU0VOSEE+IGVudHJpZXM9MTAwICBmb3JjZT15ICBpZ25vcmVjYXNlPVk=[/et_pb_dmb_code_snippet]

EXEMPLO:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”b3JhcHdkICBmaWxlPSRPUkFDTEVfSE9NRS9kYnMvb3JhcHcgcGFzc3dvcmQ9b3JhY2xlIGVudHJpZXM9MTAwIGZvcmNlPXkgIGlnbm9yZWNhc2U9WQ==” hover_enabled=”0″]b3JhcHdkICBmaWxlPSRPUkFDTEVfSE9NRS9kYnMvb3JhcHcgcGFzc3dvcmQ9b3JhY2xlIGVudHJpZXM9MTAwIGZvcmNlPXkgIGlnbm9yZWNhc2U9WQ==[/et_pb_dmb_code_snippet]

IMPORTANTE: Este arquivo gerado pelo utilitário orapwd deve existir em ambos os hosts e deve conter a mesma senha. Portanto utilize o mesmo comando para criar o password file.

No Source Database é possível validar a compatibilidade da senha, cruzando informações da tabela no dicionário de dados sys.user$ e o arquivo $ORACLE_HOME/dbs/orapw, veja abaixo:

Validaremos a conectividade entre as database instance (SOURCE e AUXILIARY) utilizando as string de conexão publicada em $ORACLE_HOME/network/admin/tnsnames.ora .

TESTE DE CONECTIVIDADE NO SOURCE DATABASE

TESTE DE CONECTIVIDADE NO AUXILIARY DATABASE

  • Validação de conectividade no RMAN

Uma operação de “Active Database Duplication” é feita via RMAN, envolvendo um target, que representa o Source Database e um auxiliary, que representa o auxiliary database. É importante ressaltar que esta operação não envolve um catalogo do RMAN, caso exista, somente o target.
Para validar execute o comando abaixo:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”cm1hbiB0YXJnZXQgc3lzL29yYWNsZUBEQl9TT1VSQ0UgYXV4aWxpYXJ5ICBzeXMvb3JhY2xlQERCX0FVWElMSUFSWQ==” hover_enabled=”0″]cm1hbiB0YXJnZXQgc3lzL29yYWNsZUBEQl9TT1VSQ0UgYXV4aWxpYXJ5ICBzeXMvb3JhY2xlQERCX0FVWElMSUFSWQ==[/et_pb_dmb_code_snippet]

TESTE DE CONECTIVIDADE NO SOURCE DATABASE

TESTE DE CONECTIVIDADE NO AUXILIARY DATABASE

Passo 2) Execução do “Active Database Duplication”

A partir do Oracle Database 12c, é possível optar por dois diferentes métodos de realizar o Active Database Duplication, são eles:

  • Push-based Method: O database duplication é realizado usando “image copie”, onde o source database transfere os database files para o auxiliary, que são necessários para clonagem. É importante ressaltar que o target channel fazem a maior parte do trabalho, neste métodos, ou seja, ocorre maior degradação do desempenho no target database. Este é o tradicional e único método utilizado nas versões pre-12c.
[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”ZHVwbGljYXRlIHRhcmdldCBkYXRhYmFzZSB0byBDREIxIGZyb20gYWN0aXZlICBkYXRhYmFzZTs=” hover_enabled=”0″]ZHVwbGljYXRlIHRhcmdldCBkYXRhYmFzZSB0byBDREIxIGZyb20gYWN0aXZlICBkYXRhYmFzZTs=[/et_pb_dmb_code_snippet]
  • Pull-based Method: O database duplication é realizado usando “backup set”, permitindo assim o uso de compressão, com isso é reduzido volume de dados o trafegados via rede (transferência dos backupset para o Auxiliary host), a transferência do backup set é feita através do Oracle Net Service. É importante ressaltar que a auxiliary channel fazem a maior parte do trabalho, evitando assim uma degradação do desempenho no target database.  Este novo método foi introduzido no oracle 12c.
[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”ZHVwbGljYXRlIHRhcmdldCBkYXRhYmFzZSB0byBDREIxIGZyb20gYWN0aXZlIGRhdGFiYXNlICB1c2luZyBDT01QUkVTU0VEIEJBQ0tVUFNFVCA7IA==” hover_enabled=”0″]ZHVwbGljYXRlIHRhcmdldCBkYXRhYmFzZSB0byBDREIxIGZyb20gYWN0aXZlIGRhdGFiYXNlICB1c2luZyBDT01QUkVTU0VEIEJBQ0tVUFNFVCA7IA==[/et_pb_dmb_code_snippet]

Importantes considerações antes de iniciar o duplicate

  • Active Database Duplicate não envolve catalogo do RMAN (Somente target).
  • Senha do password file criadas via orapwd, deve ser iguais em ambos os hosts.
  • O DB_NAME de ambos os database devem ser o mesmo ao executar o duplicate.

 

 

Executando Active Duplicate utilizando Push-based Method

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”W0NEQjEub3JhY2xlQHByaW1hcnkgfl0kICBybWFuIHRhcmdldCBzeXMvb3JhY2xlQERCX1NPVVJDRSBhdXhpbGlhcnkgICBzeXMvb3JhY2xlQERCX0FVWElMSUFSWQpSZWNvdmVyeSBNYW5hZ2VyOiBSZWxlYXNlICAxMi4xLjAuMi4wIC0gUHJvZHVjdGlvbiBvbiBXZWQgRGVjIDEwIDIxOjA2OjAwIDIwMTQKQ29weXJpZ2h0IChjKSAxOTgyLCAyMDE0LCAgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gIEFsbCByaWdodHMgIHJlc2VydmVkLgpjb25uZWN0ZWQgdG8gdGFyZ2V0ICBkYXRhYmFzZTogQ0RCMSAoREJJRD04MzExOTI3NTApCmNvbm5lY3RlZCB0byBhdXhpbGlhcnkgIGRhdGFiYXNlOiBDREIxIChub3QgbW91bnRlZCkKUk1BTj4gZHVwbGljYXRlIHRhcmdldCAgZGF0YWJhc2UgdG8gQ0RCMSBmcm9tIGFjdGl2ZSBkYXRhYmFzZTsKU3RhcnRpbmcgRHVwbGljYXRlIERiIGF0ICAxMC1ERUMtMTQKdXNpbmcgdGFyZ2V0IGRhdGFiYXNlICBjb250cm9sIGZpbGUgaW5zdGVhZCBvZiByZWNvdmVyeSBjYXRhbG9nCmFsbG9jYXRlZCBjaGFubmVsOiAgT1JBX0FVWF9ESVNLXzEKY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIFNJRD0yMiBkZXZpY2UgdHlwZT1ESVNLCmN1cnJlbnQgbG9nIGFyY2hpdmVkCmNvbnRlbnRzIG9mIE1lbW9yeSBTY3JpcHQ6CnsKc3FsIGNsb25lICJjcmVhdGUgc3BmaWxlIGZyb20gIG1lbW9yeSI7Cn0KZXhlY3V0aW5nIE1lbW9yeSBTY3JpcHQKc3FsIHN0YXRlbWVudDogY3JlYXRlICBzcGZpbGUgZnJvbSBtZW1vcnkKY29udGVudHMgb2YgTWVtb3J5IFNjcmlwdDoKewpzaHV0ZG93biBjbG9uZSBpbW1lZGlhdGU7CnN0YXJ0dXAgY2xvbmUgbm9tb3VudDsKfQpleGVjdXRpbmcgTWVtb3J5IFNjcmlwdApPcmFjbGUgaW5zdGFuY2Ugc2h1dCBkb3duCmNvbm5lY3RlZCB0byBhdXhpbGlhcnkgIGRhdGFiYXNlIChub3Qgc3RhcnRlZCkKT3JhY2xlIGluc3RhbmNlIHN0YXJ0ZWQKVG90YWwgU3lzdGVtIEdsb2JhbCAgQXJlYSAgICAgNTk5Nzg1NDcyIGJ5dGVzCkZpeGVkIFNpemUgICAgICAgICAgICAgICAgICAgICAyOTI3MTkyIGJ5dGVzClZhcmlhYmxlIFNpemUgICAgICAgICAgICAgICAgMjgxMDE5ODE2IGJ5dGVzCkRhdGFiYXNlIEJ1ZmZlcnMgICAgICAgICAgICAgMzEwMzc4NDk2IGJ5dGVzClJlZG8gQnVmZmVycyAgICAgICAgICAgICAgICAgICA1NDU5OTY4IGJ5dGVzCmNvbnRlbnRzIG9mIE1lbW9yeSBTY3JpcHQ6CiAgIHsKICAgc3FsIGNsb25lICJhbHRlciBzeXN0ZW0gc2V0ICBkYl9uYW1lID0KICAgJydDREIxJycgY29tbWVudD0KICAgJydNb2RpZmllZCBieSBSTUFOIGR1cGxpY2F0ZScnICBzY29wZT1zcGZpbGUiOwogICBzcWwgY2xvbmUgImFsdGVyIHN5c3RlbSBzZXQgIGRiX3VuaXF1ZV9uYW1lID0KICAgJydDREIxJycgY29tbWVudD0KICAgJydNb2RpZmllZCBieSBSTUFOIGR1cGxpY2F0ZScnICBzY29wZT1zcGZpbGUiOwogICBzaHV0ZG93biBjbG9uZSBpbW1lZGlhdGU7CiAgIHN0YXJ0dXAgY2xvbmUgZm9yY2Ugbm9tb3VudAogICByZXN0b3JlIGNsb25lIGZyb20gc2VydmljZSAgJ0RCX1NPVVJDRScgcHJpbWFyeSBjb250cm9sZmlsZTsKICAgYWx0ZXIgY2xvbmUgZGF0YWJhc2UgbW91bnQ7CiAgIH0KICAgZXhlY3V0aW5nIE1lbW9yeSBTY3JpcHQKc3FsIHN0YXRlbWVudDogYWx0ZXIgc3lzdGVtICBzZXQgIGRiX25hbWUgPSAgJydDREIxJycgY29tbWVudD0gJydNb2RpZmllZCBieSBSTUFOICBkdXBsaWNhdGUnJyBzY29wZT1zcGZpbGUKc3FsIHN0YXRlbWVudDogYWx0ZXIgc3lzdGVtICBzZXQgIGRiX3VuaXF1ZV9uYW1lID0gICcnQ0RCMScnIGNvbW1lbnQ9ICcnTW9kaWZpZWQgYnkgUk1BTiAgZHVwbGljYXRlJycgc2NvcGU9c3BmaWxlCk9yYWNsZSBpbnN0YW5jZSBzaHV0IGRvd24KT3JhY2xlIGluc3RhbmNlIHN0YXJ0ZWQKVG90YWwgU3lzdGVtIEdsb2JhbCBBcmVhICAgICA1OTk3ODU0NzIgYnl0ZXMKRml4ZWQgU2l6ZSAgICAgICAgICAgICAgICAgICAgIDI5MjcxOTIgYnl0ZXMKICAgVmFyaWFibGUgU2l6ZSAgICAgICAgICAgICAgICAyODEwMTk4MTYgYnl0ZXMKICAgRGF0YWJhc2UgQnVmZmVycyAgICAgICAgICAgICAzMTAzNzg0OTYgYnl0ZXMKICAgUmVkbyBCdWZmZXJzICAgICAgICAgICAgICAgICAgIDU0NTk5NjggYnl0ZXMKU3RhcnRpbmcgcmVzdG9yZSBhdCAgMTAtREVDLTE0CiAgIGFsbG9jYXRlZCBjaGFubmVsOiBPUkFfQVVYX0RJU0tfMQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgU0lEPTIyIGRldmljZSB0eXBlPURJU0sKY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHN0YXJ0aW5nIGRhdGFmaWxlIGJhY2t1cCBzZXQgcmVzdG9yZQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgdXNpbmcgbmV0d29yayBiYWNrdXAgc2V0IGZyb20gc2VydmljZSBEQl9TT1VSQ0UKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHJlc3RvcmluZyBjb250cm9sIGZpbGUKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHJlc3RvcmUgY29tcGxldGUsIGVsYXBzZWQgdGltZTogMDA6MDA6MDUKICAgb3V0cHV0IGZpbGUgIG5hbWU9L29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvY29udHJvbDAxLmN0bAogICBGaW5pc2hlZCByZXN0b3JlIGF0ICAxMC1ERUMtMTQKZGF0YWJhc2UgbW91bnRlZApjb250ZW50cyBvZiBNZW1vcnkgU2NyaXB0OgogICB7CiAgIHNldCBuZXduYW1lIGZvciBkYXRhZmlsZSAgMSB0bwogICAiL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvc3lzdGVtMDEuZGJmIjsKICAgc2V0IG5ld25hbWUgZm9yIGRhdGFmaWxlICAyIHRvCiAgICIvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9wZGJzZWVkL3N5c3RlbTAxLmRiZiI7CiAgIHNldCBuZXduYW1lIGZvciBkYXRhZmlsZSAgMyB0bwogICAiL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvc3lzYXV4MDEuZGJmIjsKICAgc2V0IG5ld25hbWUgZm9yIGRhdGFmaWxlICA0IHRvCiAgICIvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9wZGJzZWVkL3N5c2F1eDAxLmRiZiI7CiAgIHNldCBuZXduYW1lIGZvciBkYXRhZmlsZSAgNSB0bwogICAiL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvdW5kb3RiczAxLmRiZiI7CiAgIHNldCBuZXduYW1lIGZvciBkYXRhZmlsZSAgNiB0bwogICAiL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvdXNlcnMwMS5kYmYiOwogICBzZXQgbmV3bmFtZSBmb3IgZGF0YWZpbGUgIDEwIHRvCiAgICIvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9QREIxL3N5c3RlbTAxLmRiZiI7CiAgIHNldCBuZXduYW1lIGZvciBkYXRhZmlsZSAgMTEgdG8KICAgIi9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL1BEQjEvc3lzYXV4MDEuZGJmIjsKICAgc2V0IG5ld25hbWUgZm9yIGRhdGFmaWxlICAxMiB0bwogICAiL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvUERCMS9QREIxX3VzZXJzMDEuZGJmIjsKICAgcmVzdG9yZQogICBmcm9tIHNlcnZpY2UgICAnREJfU09VUkNFJyAgIGNsb25lIGRhdGFiYXNlCiAgIDsKICAgc3FsICdhbHRlciBzeXN0ZW0gYXJjaGl2ZSBsb2cgY3VycmVudCc7CiAgIH0KICAgZXhlY3V0aW5nIE1lbW9yeSBTY3JpcHQKZXhlY3V0aW5nIGNvbW1hbmQ6IFNFVCAgTkVXTkFNRQpleGVjdXRpbmcgY29tbWFuZDogU0VUICBORVdOQU1FCmV4ZWN1dGluZyBjb21tYW5kOiBTRVQgIE5FV05BTUUKZXhlY3V0aW5nIGNvbW1hbmQ6IFNFVCAgTkVXTkFNRQpleGVjdXRpbmcgY29tbWFuZDogU0VUICBORVdOQU1FCmV4ZWN1dGluZyBjb21tYW5kOiBTRVQgIE5FV05BTUUKZXhlY3V0aW5nIGNvbW1hbmQ6IFNFVCAgTkVXTkFNRQpleGVjdXRpbmcgY29tbWFuZDogU0VUICBORVdOQU1FCmV4ZWN1dGluZyBjb21tYW5kOiBTRVQgIE5FV05BTUUKU3RhcnRpbmcgcmVzdG9yZSBhdCAgMTAtREVDLTE0CiAgIHVzaW5nIGNoYW5uZWwgIE9SQV9BVVhfRElTS18xCmNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICBzdGFydGluZyBkYXRhZmlsZSBiYWNrdXAgc2V0IHJlc3RvcmUKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHVzaW5nIG5ldHdvcmsgYmFja3VwIHNldCBmcm9tIHNlcnZpY2UgREJfU09VUkNFCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICBzcGVjaWZ5aW5nIGRhdGFmaWxlKHMpIHRvIHJlc3RvcmUgZnJvbSBiYWNrdXAgc2V0CiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICByZXN0b3JpbmcgZGF0YWZpbGUgMDAwMDEgdG8gL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvc3lzdGVtMDEuZGJmCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICByZXN0b3JlIGNvbXBsZXRlLCBlbGFwc2VkIHRpbWU6IDAwOjAwOjQ1CiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICBzdGFydGluZyBkYXRhZmlsZSBiYWNrdXAgc2V0IHJlc3RvcmUKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHVzaW5nIG5ldHdvcmsgYmFja3VwIHNldCBmcm9tIHNlcnZpY2UgREJfU09VUkNFCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICBzcGVjaWZ5aW5nIGRhdGFmaWxlKHMpIHRvIHJlc3RvcmUgZnJvbSBiYWNrdXAgc2V0CiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICByZXN0b3JpbmcgZGF0YWZpbGUgMDAwMDIgdG8gIC9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3BkYnNlZWQvc3lzdGVtMDEuZGJmCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICByZXN0b3JlIGNvbXBsZXRlLCBlbGFwc2VkIHRpbWU6IDAwOjAwOjE1CiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICBzdGFydGluZyBkYXRhZmlsZSBiYWNrdXAgc2V0IHJlc3RvcmUKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHVzaW5nIG5ldHdvcmsgYmFja3VwIHNldCBmcm9tIHNlcnZpY2UgREJfU09VUkNFCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICBzcGVjaWZ5aW5nIGRhdGFmaWxlKHMpIHRvIHJlc3RvcmUgZnJvbSBiYWNrdXAgc2V0CiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICByZXN0b3JpbmcgZGF0YWZpbGUgMDAwMDMgdG8gL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvc3lzYXV4MDEuZGJmCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICByZXN0b3JlIGNvbXBsZXRlLCBlbGFwc2VkIHRpbWU6IDAwOjAwOjM2CiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICBzdGFydGluZyBkYXRhZmlsZSBiYWNrdXAgc2V0IHJlc3RvcmUKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHVzaW5nIG5ldHdvcmsgYmFja3VwIHNldCBmcm9tIHNlcnZpY2UgREJfU09VUkNFCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6IHNwZWNpZnlpbmcgIGRhdGFmaWxlKHMpIHRvIHJlc3RvcmUgZnJvbSBiYWNrdXAgc2V0CiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICByZXN0b3JpbmcgZGF0YWZpbGUgMDAwMDQgdG8gIC9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3BkYnNlZWQvc3lzYXV4MDEuZGJmCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICByZXN0b3JlIGNvbXBsZXRlLCBlbGFwc2VkIHRpbWU6IDAwOjAwOjI1CiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICBzdGFydGluZyBkYXRhZmlsZSBiYWNrdXAgc2V0IHJlc3RvcmUKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHVzaW5nIG5ldHdvcmsgYmFja3VwIHNldCBmcm9tIHNlcnZpY2UgREJfU09VUkNFCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICBzcGVjaWZ5aW5nIGRhdGFmaWxlKHMpIHRvIHJlc3RvcmUgZnJvbSBiYWNrdXAgc2V0CiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICByZXN0b3JpbmcgZGF0YWZpbGUgMDAwMDUgdG8gL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvdW5kb3RiczAxLmRiZgogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgcmVzdG9yZSBjb21wbGV0ZSwgZWxhcHNlZCB0aW1lOiAwMDowMDoyNQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgc3RhcnRpbmcgZGF0YWZpbGUgYmFja3VwIHNldCByZXN0b3JlCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICB1c2luZyBuZXR3b3JrIGJhY2t1cCBzZXQgZnJvbSBzZXJ2aWNlIERCX1NPVVJDRQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgc3BlY2lmeWluZyBkYXRhZmlsZShzKSB0byByZXN0b3JlIGZyb20gYmFja3VwIHNldAogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgcmVzdG9yaW5nIGRhdGFmaWxlIDAwMDA2IHRvIC9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3VzZXJzMDEuZGJmCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICByZXN0b3JlIGNvbXBsZXRlLCBlbGFwc2VkIHRpbWU6IDAwOjAwOjAyCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICBzdGFydGluZyBkYXRhZmlsZSBiYWNrdXAgc2V0IHJlc3RvcmUKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHVzaW5nIG5ldHdvcmsgYmFja3VwIHNldCBmcm9tIHNlcnZpY2UgREJfU09VUkNFCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICBzcGVjaWZ5aW5nIGRhdGFmaWxlKHMpIHRvIHJlc3RvcmUgZnJvbSBiYWNrdXAgc2V0CiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICByZXN0b3JpbmcgZGF0YWZpbGUgMDAwMTAgdG8gL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvUERCMS9zeXN0ZW0wMS5kYmYKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHJlc3RvcmUgY29tcGxldGUsIGVsYXBzZWQgdGltZTogMDA6MDA6MTUKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHN0YXJ0aW5nIGRhdGFmaWxlIGJhY2t1cCBzZXQgcmVzdG9yZQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgdXNpbmcgbmV0d29yayBiYWNrdXAgc2V0IGZyb20gc2VydmljZSBEQl9TT1VSQ0UKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHNwZWNpZnlpbmcgZGF0YWZpbGUocykgdG8gcmVzdG9yZSBmcm9tIGJhY2t1cCBzZXQKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHJlc3RvcmluZyBkYXRhZmlsZSAwMDAxMSB0byAvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9QREIxL3N5c2F1eDAxLmRiZgogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgcmVzdG9yZSBjb21wbGV0ZSwgZWxhcHNlZCB0aW1lOiAwMDowMDoyNgogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiBzdGFydGluZyAgZGF0YWZpbGUgYmFja3VwIHNldCByZXN0b3JlCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICB1c2luZyBuZXR3b3JrIGJhY2t1cCBzZXQgZnJvbSBzZXJ2aWNlIERCX1NPVVJDRQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgc3BlY2lmeWluZyBkYXRhZmlsZShzKSB0byByZXN0b3JlIGZyb20gYmFja3VwIHNldAogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgcmVzdG9yaW5nIGRhdGFmaWxlIDAwMDEyIHRvIC9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL1BEQjEvUERCMV91c2VyczAxLmRiZgogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgcmVzdG9yZSBjb21wbGV0ZSwgZWxhcHNlZCB0aW1lOiAwMDowMDowMQogICBGaW5pc2hlZCByZXN0b3JlIGF0ICAxMC1ERUMtMTQKc3FsIHN0YXRlbWVudDogYWx0ZXIgc3lzdGVtICBhcmNoaXZlIGxvZyBjdXJyZW50CiAgIGN1cnJlbnQgbG9nIGFyY2hpdmVkCmNvbnRlbnRzIG9mIE1lbW9yeSBTY3JpcHQ6CiAgIHsKICAgcmVzdG9yZSBjbG9uZSBmb3JjZSBmcm9tIHNlcnZpY2UgICdEQl9TT1VSQ0UnCiAgIGFyY2hpdmVsb2cgZnJvbSBzY24gIDI1NzkwODk7CiAgIHN3aXRjaCBjbG9uZSBkYXRhZmlsZSBhbGw7CiAgIH0KICAgZXhlY3V0aW5nIE1lbW9yeSBTY3JpcHQKU3RhcnRpbmcgcmVzdG9yZSBhdCAgMTAtREVDLTE0CiAgIHVzaW5nIGNoYW5uZWwgIE9SQV9BVVhfRElTS18xCmNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICBzdGFydGluZyBhcmNoaXZlZCBsb2cgcmVzdG9yZSB0byBkZWZhdWx0IGRlc3RpbmF0aW9uCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICB1c2luZyBuZXR3b3JrIGJhY2t1cCBzZXQgZnJvbSBzZXJ2aWNlIERCX1NPVVJDRQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgcmVzdG9yaW5nIGFyY2hpdmVkIGxvZwogICBhcmNoaXZlZCBsb2cgdGhyZWFkPTEgIHNlcXVlbmNlPTIwOAogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgcmVzdG9yZSBjb21wbGV0ZSwgZWxhcHNlZCB0aW1lOiAwMDowMDowMQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgc3RhcnRpbmcgYXJjaGl2ZWQgbG9nIHJlc3RvcmUgdG8gZGVmYXVsdCBkZXN0aW5hdGlvbgogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgdXNpbmcgbmV0d29yayBiYWNrdXAgc2V0IGZyb20gc2VydmljZSBEQl9TT1VSQ0UKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHJlc3RvcmluZyBhcmNoaXZlZCBsb2cKICAgYXJjaGl2ZWQgbG9nIHRocmVhZD0xICBzZXF1ZW5jZT0yMDkKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHJlc3RvcmUgY29tcGxldGUsIGVsYXBzZWQgdGltZTogMDA6MDA6MDEKICAgRmluaXNoZWQgcmVzdG9yZSBhdCAgMTAtREVDLTE0CmRhdGFmaWxlIDEgc3dpdGNoZWQgdG8gIGRhdGFmaWxlIGNvcHkKICAgaW5wdXQgZGF0YWZpbGUgY29weSAgUkVDSUQ9MTAgU1RBTVA9ODY1OTc3MDU0IGZpbGUgIG5hbWU9L29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvc3lzdGVtMDEuZGJmCiAgIGRhdGFmaWxlIDIgc3dpdGNoZWQgdG8gIGRhdGFmaWxlIGNvcHkKICAgaW5wdXQgZGF0YWZpbGUgY29weSAgUkVDSUQ9MTEgU1RBTVA9ODY1OTc3MDU0IGZpbGUgIG5hbWU9L29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvcGRic2VlZC9zeXN0ZW0wMS5kYmYKICAgZGF0YWZpbGUgMyBzd2l0Y2hlZCB0byAgZGF0YWZpbGUgY29weQogICBpbnB1dCBkYXRhZmlsZSBjb3B5ICBSRUNJRD0xMiBTVEFNUD04NjU5NzcwNTQgZmlsZSAgbmFtZT0vb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9zeXNhdXgwMS5kYmYKICAgZGF0YWZpbGUgNCBzd2l0Y2hlZCB0byAgZGF0YWZpbGUgY29weQogICBpbnB1dCBkYXRhZmlsZSBjb3B5ICBSRUNJRD0xMyBTVEFNUD04NjU5NzcwNTQgZmlsZSAgbmFtZT0vb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9wZGJzZWVkL3N5c2F1eDAxLmRiZgogICBkYXRhZmlsZSA1IHN3aXRjaGVkIHRvICBkYXRhZmlsZSBjb3B5CiAgIGlucHV0IGRhdGFmaWxlIGNvcHkgIFJFQ0lEPTE0IFNUQU1QPTg2NTk3NzA1NCBmaWxlICBuYW1lPS9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3VuZG90YnMwMS5kYmYKICAgZGF0YWZpbGUgNiBzd2l0Y2hlZCB0byAgZGF0YWZpbGUgY29weQogICBpbnB1dCBkYXRhZmlsZSBjb3B5ICBSRUNJRD0xNSBTVEFNUD04NjU5NzcwNTQgZmlsZSBuYW1lPS9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3VzZXJzMDEuZGJmCiAgIGRhdGFmaWxlIDEwIHN3aXRjaGVkIHRvICBkYXRhZmlsZSBjb3B5CiAgIGlucHV0IGRhdGFmaWxlIGNvcHkgIFJFQ0lEPTE2IFNUQU1QPTg2NTk3NzA1NCBmaWxlIG5hbWU9L29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvUERCMS9zeXN0ZW0wMS5kYmYKICAgZGF0YWZpbGUgMTEgc3dpdGNoZWQgdG8gIGRhdGFmaWxlIGNvcHkKICAgaW5wdXQgZGF0YWZpbGUgY29weSAgUkVDSUQ9MTcgU1RBTVA9ODY1OTc3MDU0IGZpbGUgIG5hbWU9L29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvUERCMS9zeXNhdXgwMS5kYmYKICAgZGF0YWZpbGUgMTIgc3dpdGNoZWQgdG8gIGRhdGFmaWxlIGNvcHkKICAgaW5wdXQgZGF0YWZpbGUgY29weSAgUkVDSUQ9MTggU1RBTVA9ODY1OTc3MDU0IGZpbGUgbmFtZT0vb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9QREIxL1BEQjFfdXNlcnMwMS5kYmYKY29udGVudHMgb2YgTWVtb3J5IFNjcmlwdDoKICAgewogICBzZXQgdW50aWwgc2NuICAyNTc5MzkxOwogICByZWNvdmVyCiAgIGNsb25lIGRhdGFiYXNlCiAgIGRlbGV0ZSBhcmNoaXZlbG9nCiAgIDsKICAgfQogICBleGVjdXRpbmcgTWVtb3J5IFNjcmlwdApleGVjdXRpbmcgY29tbWFuZDogU0VUICB1bnRpbCBjbGF1c2UKU3RhcnRpbmcgcmVjb3ZlciBhdCAxMC1ERUMtMTQKICAgdXNpbmcgY2hhbm5lbCAgT1JBX0FVWF9ESVNLXzEKc3RhcnRpbmcgbWVkaWEgcmVjb3ZlcnkKYXJjaGl2ZWQgbG9nIGZvciB0aHJlYWQgMSAgd2l0aCBzZXF1ZW5jZSAyMDggaXMgYWxyZWFkeSBvbiBkaXNrIGFzIGZpbGUgIAovb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9GUkEvMV8yMDhfODU3NDc1MzEwLmRiZgogICBhcmNoaXZlZCBsb2cgZm9yIHRocmVhZCAxICB3aXRoIHNlcXVlbmNlIDIwOSBpcyBhbHJlYWR5IG9uIGRpc2sgYXMgZmlsZSAgCi9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL0ZSQS8xXzIwOV84NTc0NzUzMTAuZGJmCiAgIGFyY2hpdmVkIGxvZyBmaWxlICBuYW1lPS9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL0ZSQS8xXzIwOF84NTc0NzUzMTAuZGJmIHRocmVhZD0xICBzZXF1ZW5jZT0yMDgKICAgYXJjaGl2ZWQgbG9nIGZpbGUgIG5hbWU9L29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvRlJBLzFfMjA5Xzg1NzQ3NTMxMC5kYmYgdGhyZWFkPTEgIHNlcXVlbmNlPTIwOQogICBtZWRpYSByZWNvdmVyeSBjb21wbGV0ZSwgIGVsYXBzZWQgdGltZTogMDA6MDA6MDEKICAgRmluaXNoZWQgcmVjb3ZlciBhdCAgMTAtREVDLTE0CiAgIE9yYWNsZSBpbnN0YW5jZSBzdGFydGVkClRvdGFsIFN5c3RlbSBHbG9iYWwgIEFyZWEgICAgIDU5OTc4NTQ3MiBieXRlcwpGaXhlZCBTaXplICAgICAgICAgICAgICAgICAgICAgMjkyNzE5MiBieXRlcwogICBWYXJpYWJsZSBTaXplICAgICAgICAgICAgICAgIDI4MTAxOTgxNiBieXRlcwogICBEYXRhYmFzZSBCdWZmZXJzICAgICAgICAgICAgIDMxMDM3ODQ5NiBieXRlcwogICBSZWRvIEJ1ZmZlcnMgICAgICAgICAgICAgICAgICAgNTQ1OTk2OCBieXRlcwpjb250ZW50cyBvZiBNZW1vcnkgU2NyaXB0OgogICB7CiAgIHNxbCBjbG9uZSAiYWx0ZXIgc3lzdGVtIHNldCAgZGJfbmFtZSA9CiAgICcnQ0RCMScnIGNvbW1lbnQ9CiAgICcnUmVzZXQgdG8gb3JpZ2luYWwgdmFsdWUgYnkgUk1BTicnICBzY29wZT1zcGZpbGUiOwogICBzcWwgY2xvbmUgImFsdGVyIHN5c3RlbSByZXNldCAgZGJfdW5pcXVlX25hbWUgc2NvcGU9c3BmaWxlIjsKICAgfQogICBleGVjdXRpbmcgTWVtb3J5IFNjcmlwdApzcWwgc3RhdGVtZW50OiBhbHRlciBzeXN0ZW0gIHNldCAgZGJfbmFtZSA9ICAnJ0NEQjEnJyBjb21tZW50PSAnJ1Jlc2V0IHRvIG9yaWdpbmFsIHZhbHVlICBieSBSTUFOJycgc2NvcGU9c3BmaWxlCnNxbCBzdGF0ZW1lbnQ6IGFsdGVyIHN5c3RlbSAgcmVzZXQgIGRiX3VuaXF1ZV9uYW1lIHNjb3BlPXNwZmlsZQogICBPcmFjbGUgaW5zdGFuY2Ugc3RhcnRlZApUb3RhbCBTeXN0ZW0gR2xvYmFsICBBcmVhICAgICA1OTk3ODU0NzIgYnl0ZXMKRml4ZWQgU2l6ZSAgICAgICAgICAgICAgICAgICAgIDI5MjcxOTIgYnl0ZXMKICAgVmFyaWFibGUgU2l6ZSAgICAgICAgICAgICAgICAyODEwMTk4MTYgYnl0ZXMKICAgRGF0YWJhc2UgQnVmZmVycyAgICAgICAgICAgICAzMTAzNzg0OTYgYnl0ZXMKICAgUmVkbyBCdWZmZXJzICAgICAgICAgICAgICAgICAgIDU0NTk5NjggYnl0ZXMKICAgc3FsIHN0YXRlbWVudDogQ1JFQVRFICBDT05UUk9MRklMRSBSRVVTRSBTRVQgREFUQUJBU0UgIkNEQjEiIFJFU0VUTE9HUyBBUkNISVZFTE9HCiAgIE1BWExPR0ZJTEVTICAgICAxNgogICBNQVhMT0dNRU1CRVJTICAgICAgMwogICBNQVhEQVRBRklMRVMgICAgIDEwMjQKICAgTUFYSU5TVEFOQ0VTICAgICA4CiAgIE1BWExPR0hJU1RPUlkgICAgICAyOTIKICAgTE9HRklMRQogICBHUk9VUCAgICAxICggJy9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3JlZG8wMS5sb2cnICkgU0laRSA1MCBNICBSRVVTRSwKICAgR1JPVVAgICAgMiAoICcvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9yZWRvMDIubG9nJyApIFNJWkUgNTAgTSAgUkVVU0UsCiAgIEdST1VQICAgIDMgKCAnL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvcmVkbzAzLmxvZycgKSBTSVpFIDUwIE0gIFJFVVNFCiAgIERBVEFGSUxFCiAgICcvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9zeXN0ZW0wMS5kYmYnLAogICAnL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvcGRic2VlZC9zeXN0ZW0wMS5kYmYnLAogICAnL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvUERCMS9zeXN0ZW0wMS5kYmYnCiAgIENIQVJBQ1RFUiBTRVQgV0U4TVNXSU4xMjUyCmNvbnRlbnRzIG9mIE1lbW9yeSBTY3JpcHQ6CiAgIHsKICAgc2V0IG5ld25hbWUgZm9yIHRlbXBmaWxlICAxIHRvCiAgICIvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS90ZW1wMDEuZGJmIjsKICAgc2V0IG5ld25hbWUgZm9yIHRlbXBmaWxlICAyIHRvCiAgICIvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9wZGJzZWVkL3RlbXAwMS5kYmYiOwogICBzZXQgbmV3bmFtZSBmb3IgdGVtcGZpbGUgIDMgdG8KICAgIi9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL1BEQjEvdGVtcDAxLmRiZiI7CiAgIHN3aXRjaCBjbG9uZSB0ZW1wZmlsZSBhbGw7CiAgIGNhdGFsb2cgY2xvbmUgZGF0YWZpbGVjb3B5ICAgIi9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3N5c2F1eDAxLmRiZiIsCiAgICIvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9wZGJzZWVkL3N5c2F1eDAxLmRiZiIsCiAgICIvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS91bmRvdGJzMDEuZGJmIiwKICAgIi9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3VzZXJzMDEuZGJmIiwKICAgIi9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL1BEQjEvc3lzYXV4MDEuZGJmIiwKICAgIi9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL1BEQjEvUERCMV91c2VyczAxLmRiZiI7CiAgIHN3aXRjaCBjbG9uZSBkYXRhZmlsZSBhbGw7CiAgIH0KICAgZXhlY3V0aW5nIE1lbW9yeSBTY3JpcHQKZXhlY3V0aW5nIGNvbW1hbmQ6IFNFVCAgTkVXTkFNRQpleGVjdXRpbmcgY29tbWFuZDogU0VUICBORVdOQU1FCmV4ZWN1dGluZyBjb21tYW5kOiBTRVQgIE5FV05BTUUKcmVuYW1lZCB0ZW1wZmlsZSAxIHRvICAvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS90ZW1wMDEuZGJmIGluIGNvbnRyb2wgZmlsZQogICByZW5hbWVkIHRlbXBmaWxlIDIgdG8gIC9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3BkYnNlZWQvdGVtcDAxLmRiZiBpbiBjb250cm9sIGZpbGUKICAgcmVuYW1lZCB0ZW1wZmlsZSAzIHRvICAvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9QREIxL3RlbXAwMS5kYmYgaW4gY29udHJvbCBmaWxlCmNhdGFsb2dlZCBkYXRhZmlsZSBjb3B5CiAgIGRhdGFmaWxlIGNvcHkgZmlsZSAgbmFtZT0vb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9zeXNhdXgwMS5kYmYgUkVDSUQ9MSBTVEFNUD04NjU5NzcwODIKICAgY2F0YWxvZ2VkIGRhdGFmaWxlIGNvcHkKICAgZGF0YWZpbGUgY29weSBmaWxlICBuYW1lPS9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3BkYnNlZWQvc3lzYXV4MDEuZGJmIFJFQ0lEPTIgIFNUQU1QPTg2NTk3NzA4MgogICBjYXRhbG9nZWQgZGF0YWZpbGUgY29weQogICBkYXRhZmlsZSBjb3B5IGZpbGUgIG5hbWU9L29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvdW5kb3RiczAxLmRiZiBSRUNJRD0zIFNUQU1QPTg2NTk3NzA4MgogICBjYXRhbG9nZWQgZGF0YWZpbGUgY29weQogICBkYXRhZmlsZSBjb3B5IGZpbGUgIG5hbWU9L29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvdXNlcnMwMS5kYmYgUkVDSUQ9NCBTVEFNUD04NjU5NzcwODIKICAgY2F0YWxvZ2VkIGRhdGFmaWxlIGNvcHkKICAgZGF0YWZpbGUgY29weSBmaWxlICBuYW1lPS9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL1BEQjEvc3lzYXV4MDEuZGJmIFJFQ0lEPTUgU1RBTVA9ODY1OTc3MDgyCiAgIGNhdGFsb2dlZCBkYXRhZmlsZSBjb3B5CiAgIGRhdGFmaWxlIGNvcHkgZmlsZSAgbmFtZT0vb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9QREIxL1BEQjFfdXNlcnMwMS5kYmYgUkVDSUQ9NiAgU1RBTVA9ODY1OTc3MDgyCmRhdGFmaWxlIDMgc3dpdGNoZWQgdG8gIGRhdGFmaWxlIGNvcHkKICAgaW5wdXQgZGF0YWZpbGUgY29weSBSRUNJRD0xICBTVEFNUD04NjU5NzcwODIgZmlsZSBuYW1lPS9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3N5c2F1eDAxLmRiZgogICBkYXRhZmlsZSA0IHN3aXRjaGVkIHRvICBkYXRhZmlsZSBjb3B5CiAgIGlucHV0IGRhdGFmaWxlIGNvcHkgUkVDSUQ9MiAgU1RBTVA9ODY1OTc3MDgyIGZpbGUgbmFtZT0vb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9wZGJzZWVkL3N5c2F1eDAxLmRiZgogICBkYXRhZmlsZSA1IHN3aXRjaGVkIHRvICBkYXRhZmlsZSBjb3B5CiAgIGlucHV0IGRhdGFmaWxlIGNvcHkgUkVDSUQ9MyAgU1RBTVA9ODY1OTc3MDgyIGZpbGUgbmFtZT0vb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS91bmRvdGJzMDEuZGJmCiAgIGRhdGFmaWxlIDYgc3dpdGNoZWQgdG8gIGRhdGFmaWxlIGNvcHkKICAgaW5wdXQgZGF0YWZpbGUgY29weSBSRUNJRD00ICBTVEFNUD04NjU5NzcwODIgZmlsZSBuYW1lPS9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3VzZXJzMDEuZGJmCiAgIGRhdGFmaWxlIDExIHN3aXRjaGVkIHRvICBkYXRhZmlsZSBjb3B5CiAgIGlucHV0IGRhdGFmaWxlIGNvcHkgUkVDSUQ9NSAgU1RBTVA9ODY1OTc3MDgyIGZpbGUgbmFtZT0vb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9QREIxL3N5c2F1eDAxLmRiZgogICBkYXRhZmlsZSAxMiBzd2l0Y2hlZCB0byAgZGF0YWZpbGUgY29weQogICBpbnB1dCBkYXRhZmlsZSBjb3B5IFJFQ0lEPTYgIFNUQU1QPTg2NTk3NzA4MiBmaWxlICBuYW1lPS9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL1BEQjEvUERCMV91c2VyczAxLmRiZgpjb250ZW50cyBvZiBNZW1vcnkgU2NyaXB0OgogICB7CiAgIEFsdGVyIGNsb25lIGRhdGFiYXNlIG9wZW4gcmVzZXRsb2dzOwogICB9CiAgIGV4ZWN1dGluZyBNZW1vcnkgU2NyaXB0CmRhdGFiYXNlIG9wZW5lZApjb250ZW50cyBvZiBNZW1vcnkgU2NyaXB0OgogICB7CiAgIHNxbCBjbG9uZSAiYWx0ZXIgcGx1Z2dhYmxlIGRhdGFiYXNlIGFsbCAgb3BlbiI7CiAgIH0KICAgZXhlY3V0aW5nIE1lbW9yeSBTY3JpcHQKc3FsIHN0YXRlbWVudDogYWx0ZXIgIHBsdWdnYWJsZSBkYXRhYmFzZSBhbGwgb3BlbgogICBDYW5ub3QgcmVtb3ZlIGNyZWF0ZWQgIHNlcnZlciBwYXJhbWV0ZXIgZmlsZQogICBGaW5pc2hlZCBEdXBsaWNhdGUgRGIgYXQgIDEwLURFQy0xNApSTUFOPg==” hover_enabled=”0″]W0NEQjEub3JhY2xlQHByaW1hcnkgfl0kICBybWFuIHRhcmdldCBzeXMvb3JhY2xlQERCX1NPVVJDRSBhdXhpbGlhcnkgICBzeXMvb3JhY2xlQERCX0FVWElMSUFSWQpSZWNvdmVyeSBNYW5hZ2VyOiBSZWxlYXNlICAxMi4xLjAuMi4wIC0gUHJvZHVjdGlvbiBvbiBXZWQgRGVjIDEwIDIxOjA2OjAwIDIwMTQKQ29weXJpZ2h0IChjKSAxOTgyLCAyMDE0LCAgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gIEFsbCByaWdodHMgIHJlc2VydmVkLgpjb25uZWN0ZWQgdG8gdGFyZ2V0ICBkYXRhYmFzZTogQ0RCMSAoREJJRD04MzExOTI3NTApCmNvbm5lY3RlZCB0byBhdXhpbGlhcnkgIGRhdGFiYXNlOiBDREIxIChub3QgbW91bnRlZCkKUk1BTj4gZHVwbGljYXRlIHRhcmdldCAgZGF0YWJhc2UgdG8gQ0RCMSBmcm9tIGFjdGl2ZSBkYXRhYmFzZTsKU3RhcnRpbmcgRHVwbGljYXRlIERiIGF0ICAxMC1ERUMtMTQKdXNpbmcgdGFyZ2V0IGRhdGFiYXNlICBjb250cm9sIGZpbGUgaW5zdGVhZCBvZiByZWNvdmVyeSBjYXRhbG9nCmFsbG9jYXRlZCBjaGFubmVsOiAgT1JBX0FVWF9ESVNLXzEKY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIFNJRD0yMiBkZXZpY2UgdHlwZT1ESVNLCmN1cnJlbnQgbG9nIGFyY2hpdmVkCmNvbnRlbnRzIG9mIE1lbW9yeSBTY3JpcHQ6CnsKc3FsIGNsb25lICJjcmVhdGUgc3BmaWxlIGZyb20gIG1lbW9yeSI7Cn0KZXhlY3V0aW5nIE1lbW9yeSBTY3JpcHQKc3FsIHN0YXRlbWVudDogY3JlYXRlICBzcGZpbGUgZnJvbSBtZW1vcnkKY29udGVudHMgb2YgTWVtb3J5IFNjcmlwdDoKewpzaHV0ZG93biBjbG9uZSBpbW1lZGlhdGU7CnN0YXJ0dXAgY2xvbmUgbm9tb3VudDsKfQpleGVjdXRpbmcgTWVtb3J5IFNjcmlwdApPcmFjbGUgaW5zdGFuY2Ugc2h1dCBkb3duCmNvbm5lY3RlZCB0byBhdXhpbGlhcnkgIGRhdGFiYXNlIChub3Qgc3RhcnRlZCkKT3JhY2xlIGluc3RhbmNlIHN0YXJ0ZWQKVG90YWwgU3lzdGVtIEdsb2JhbCAgQXJlYSAgICAgNTk5Nzg1NDcyIGJ5dGVzCkZpeGVkIFNpemUgICAgICAgICAgICAgICAgICAgICAyOTI3MTkyIGJ5dGVzClZhcmlhYmxlIFNpemUgICAgICAgICAgICAgICAgMjgxMDE5ODE2IGJ5dGVzCkRhdGFiYXNlIEJ1ZmZlcnMgICAgICAgICAgICAgMzEwMzc4NDk2IGJ5dGVzClJlZG8gQnVmZmVycyAgICAgICAgICAgICAgICAgICA1NDU5OTY4IGJ5dGVzCmNvbnRlbnRzIG9mIE1lbW9yeSBTY3JpcHQ6CiAgIHsKICAgc3FsIGNsb25lICJhbHRlciBzeXN0ZW0gc2V0ICBkYl9uYW1lID0KICAgJydDREIxJycgY29tbWVudD0KICAgJydNb2RpZmllZCBieSBSTUFOIGR1cGxpY2F0ZScnICBzY29wZT1zcGZpbGUiOwogICBzcWwgY2xvbmUgImFsdGVyIHN5c3RlbSBzZXQgIGRiX3VuaXF1ZV9uYW1lID0KICAgJydDREIxJycgY29tbWVudD0KICAgJydNb2RpZmllZCBieSBSTUFOIGR1cGxpY2F0ZScnICBzY29wZT1zcGZpbGUiOwogICBzaHV0ZG93biBjbG9uZSBpbW1lZGlhdGU7CiAgIHN0YXJ0dXAgY2xvbmUgZm9yY2Ugbm9tb3VudAogICByZXN0b3JlIGNsb25lIGZyb20gc2VydmljZSAgJ0RCX1NPVVJDRScgcHJpbWFyeSBjb250cm9sZmlsZTsKICAgYWx0ZXIgY2xvbmUgZGF0YWJhc2UgbW91bnQ7CiAgIH0KICAgZXhlY3V0aW5nIE1lbW9yeSBTY3JpcHQKc3FsIHN0YXRlbWVudDogYWx0ZXIgc3lzdGVtICBzZXQgIGRiX25hbWUgPSAgJydDREIxJycgY29tbWVudD0gJydNb2RpZmllZCBieSBSTUFOICBkdXBsaWNhdGUnJyBzY29wZT1zcGZpbGUKc3FsIHN0YXRlbWVudDogYWx0ZXIgc3lzdGVtICBzZXQgIGRiX3VuaXF1ZV9uYW1lID0gICcnQ0RCMScnIGNvbW1lbnQ9ICcnTW9kaWZpZWQgYnkgUk1BTiAgZHVwbGljYXRlJycgc2NvcGU9c3BmaWxlCk9yYWNsZSBpbnN0YW5jZSBzaHV0IGRvd24KT3JhY2xlIGluc3RhbmNlIHN0YXJ0ZWQKVG90YWwgU3lzdGVtIEdsb2JhbCBBcmVhICAgICA1OTk3ODU0NzIgYnl0ZXMKRml4ZWQgU2l6ZSAgICAgICAgICAgICAgICAgICAgIDI5MjcxOTIgYnl0ZXMKICAgVmFyaWFibGUgU2l6ZSAgICAgICAgICAgICAgICAyODEwMTk4MTYgYnl0ZXMKICAgRGF0YWJhc2UgQnVmZmVycyAgICAgICAgICAgICAzMTAzNzg0OTYgYnl0ZXMKICAgUmVkbyBCdWZmZXJzICAgICAgICAgICAgICAgICAgIDU0NTk5NjggYnl0ZXMKU3RhcnRpbmcgcmVzdG9yZSBhdCAgMTAtREVDLTE0CiAgIGFsbG9jYXRlZCBjaGFubmVsOiBPUkFfQVVYX0RJU0tfMQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgU0lEPTIyIGRldmljZSB0eXBlPURJU0sKY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHN0YXJ0aW5nIGRhdGFmaWxlIGJhY2t1cCBzZXQgcmVzdG9yZQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgdXNpbmcgbmV0d29yayBiYWNrdXAgc2V0IGZyb20gc2VydmljZSBEQl9TT1VSQ0UKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHJlc3RvcmluZyBjb250cm9sIGZpbGUKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHJlc3RvcmUgY29tcGxldGUsIGVsYXBzZWQgdGltZTogMDA6MDA6MDUKICAgb3V0cHV0IGZpbGUgIG5hbWU9L29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvY29udHJvbDAxLmN0bAogICBGaW5pc2hlZCByZXN0b3JlIGF0ICAxMC1ERUMtMTQKZGF0YWJhc2UgbW91bnRlZApjb250ZW50cyBvZiBNZW1vcnkgU2NyaXB0OgogICB7CiAgIHNldCBuZXduYW1lIGZvciBkYXRhZmlsZSAgMSB0bwogICAiL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvc3lzdGVtMDEuZGJmIjsKICAgc2V0IG5ld25hbWUgZm9yIGRhdGFmaWxlICAyIHRvCiAgICIvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9wZGJzZWVkL3N5c3RlbTAxLmRiZiI7CiAgIHNldCBuZXduYW1lIGZvciBkYXRhZmlsZSAgMyB0bwogICAiL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvc3lzYXV4MDEuZGJmIjsKICAgc2V0IG5ld25hbWUgZm9yIGRhdGFmaWxlICA0IHRvCiAgICIvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9wZGJzZWVkL3N5c2F1eDAxLmRiZiI7CiAgIHNldCBuZXduYW1lIGZvciBkYXRhZmlsZSAgNSB0bwogICAiL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvdW5kb3RiczAxLmRiZiI7CiAgIHNldCBuZXduYW1lIGZvciBkYXRhZmlsZSAgNiB0bwogICAiL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvdXNlcnMwMS5kYmYiOwogICBzZXQgbmV3bmFtZSBmb3IgZGF0YWZpbGUgIDEwIHRvCiAgICIvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9QREIxL3N5c3RlbTAxLmRiZiI7CiAgIHNldCBuZXduYW1lIGZvciBkYXRhZmlsZSAgMTEgdG8KICAgIi9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL1BEQjEvc3lzYXV4MDEuZGJmIjsKICAgc2V0IG5ld25hbWUgZm9yIGRhdGFmaWxlICAxMiB0bwogICAiL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvUERCMS9QREIxX3VzZXJzMDEuZGJmIjsKICAgcmVzdG9yZQogICBmcm9tIHNlcnZpY2UgICAnREJfU09VUkNFJyAgIGNsb25lIGRhdGFiYXNlCiAgIDsKICAgc3FsICdhbHRlciBzeXN0ZW0gYXJjaGl2ZSBsb2cgY3VycmVudCc7CiAgIH0KICAgZXhlY3V0aW5nIE1lbW9yeSBTY3JpcHQKZXhlY3V0aW5nIGNvbW1hbmQ6IFNFVCAgTkVXTkFNRQpleGVjdXRpbmcgY29tbWFuZDogU0VUICBORVdOQU1FCmV4ZWN1dGluZyBjb21tYW5kOiBTRVQgIE5FV05BTUUKZXhlY3V0aW5nIGNvbW1hbmQ6IFNFVCAgTkVXTkFNRQpleGVjdXRpbmcgY29tbWFuZDogU0VUICBORVdOQU1FCmV4ZWN1dGluZyBjb21tYW5kOiBTRVQgIE5FV05BTUUKZXhlY3V0aW5nIGNvbW1hbmQ6IFNFVCAgTkVXTkFNRQpleGVjdXRpbmcgY29tbWFuZDogU0VUICBORVdOQU1FCmV4ZWN1dGluZyBjb21tYW5kOiBTRVQgIE5FV05BTUUKU3RhcnRpbmcgcmVzdG9yZSBhdCAgMTAtREVDLTE0CiAgIHVzaW5nIGNoYW5uZWwgIE9SQV9BVVhfRElTS18xCmNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICBzdGFydGluZyBkYXRhZmlsZSBiYWNrdXAgc2V0IHJlc3RvcmUKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHVzaW5nIG5ldHdvcmsgYmFja3VwIHNldCBmcm9tIHNlcnZpY2UgREJfU09VUkNFCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICBzcGVjaWZ5aW5nIGRhdGFmaWxlKHMpIHRvIHJlc3RvcmUgZnJvbSBiYWNrdXAgc2V0CiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICByZXN0b3JpbmcgZGF0YWZpbGUgMDAwMDEgdG8gL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvc3lzdGVtMDEuZGJmCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICByZXN0b3JlIGNvbXBsZXRlLCBlbGFwc2VkIHRpbWU6IDAwOjAwOjQ1CiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICBzdGFydGluZyBkYXRhZmlsZSBiYWNrdXAgc2V0IHJlc3RvcmUKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHVzaW5nIG5ldHdvcmsgYmFja3VwIHNldCBmcm9tIHNlcnZpY2UgREJfU09VUkNFCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICBzcGVjaWZ5aW5nIGRhdGFmaWxlKHMpIHRvIHJlc3RvcmUgZnJvbSBiYWNrdXAgc2V0CiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICByZXN0b3JpbmcgZGF0YWZpbGUgMDAwMDIgdG8gIC9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3BkYnNlZWQvc3lzdGVtMDEuZGJmCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICByZXN0b3JlIGNvbXBsZXRlLCBlbGFwc2VkIHRpbWU6IDAwOjAwOjE1CiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICBzdGFydGluZyBkYXRhZmlsZSBiYWNrdXAgc2V0IHJlc3RvcmUKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHVzaW5nIG5ldHdvcmsgYmFja3VwIHNldCBmcm9tIHNlcnZpY2UgREJfU09VUkNFCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICBzcGVjaWZ5aW5nIGRhdGFmaWxlKHMpIHRvIHJlc3RvcmUgZnJvbSBiYWNrdXAgc2V0CiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICByZXN0b3JpbmcgZGF0YWZpbGUgMDAwMDMgdG8gL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvc3lzYXV4MDEuZGJmCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICByZXN0b3JlIGNvbXBsZXRlLCBlbGFwc2VkIHRpbWU6IDAwOjAwOjM2CiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICBzdGFydGluZyBkYXRhZmlsZSBiYWNrdXAgc2V0IHJlc3RvcmUKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHVzaW5nIG5ldHdvcmsgYmFja3VwIHNldCBmcm9tIHNlcnZpY2UgREJfU09VUkNFCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6IHNwZWNpZnlpbmcgIGRhdGFmaWxlKHMpIHRvIHJlc3RvcmUgZnJvbSBiYWNrdXAgc2V0CiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICByZXN0b3JpbmcgZGF0YWZpbGUgMDAwMDQgdG8gIC9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3BkYnNlZWQvc3lzYXV4MDEuZGJmCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICByZXN0b3JlIGNvbXBsZXRlLCBlbGFwc2VkIHRpbWU6IDAwOjAwOjI1CiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICBzdGFydGluZyBkYXRhZmlsZSBiYWNrdXAgc2V0IHJlc3RvcmUKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHVzaW5nIG5ldHdvcmsgYmFja3VwIHNldCBmcm9tIHNlcnZpY2UgREJfU09VUkNFCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICBzcGVjaWZ5aW5nIGRhdGFmaWxlKHMpIHRvIHJlc3RvcmUgZnJvbSBiYWNrdXAgc2V0CiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICByZXN0b3JpbmcgZGF0YWZpbGUgMDAwMDUgdG8gL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvdW5kb3RiczAxLmRiZgogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgcmVzdG9yZSBjb21wbGV0ZSwgZWxhcHNlZCB0aW1lOiAwMDowMDoyNQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgc3RhcnRpbmcgZGF0YWZpbGUgYmFja3VwIHNldCByZXN0b3JlCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICB1c2luZyBuZXR3b3JrIGJhY2t1cCBzZXQgZnJvbSBzZXJ2aWNlIERCX1NPVVJDRQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgc3BlY2lmeWluZyBkYXRhZmlsZShzKSB0byByZXN0b3JlIGZyb20gYmFja3VwIHNldAogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgcmVzdG9yaW5nIGRhdGFmaWxlIDAwMDA2IHRvIC9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3VzZXJzMDEuZGJmCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICByZXN0b3JlIGNvbXBsZXRlLCBlbGFwc2VkIHRpbWU6IDAwOjAwOjAyCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICBzdGFydGluZyBkYXRhZmlsZSBiYWNrdXAgc2V0IHJlc3RvcmUKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHVzaW5nIG5ldHdvcmsgYmFja3VwIHNldCBmcm9tIHNlcnZpY2UgREJfU09VUkNFCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICBzcGVjaWZ5aW5nIGRhdGFmaWxlKHMpIHRvIHJlc3RvcmUgZnJvbSBiYWNrdXAgc2V0CiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICByZXN0b3JpbmcgZGF0YWZpbGUgMDAwMTAgdG8gL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvUERCMS9zeXN0ZW0wMS5kYmYKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHJlc3RvcmUgY29tcGxldGUsIGVsYXBzZWQgdGltZTogMDA6MDA6MTUKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHN0YXJ0aW5nIGRhdGFmaWxlIGJhY2t1cCBzZXQgcmVzdG9yZQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgdXNpbmcgbmV0d29yayBiYWNrdXAgc2V0IGZyb20gc2VydmljZSBEQl9TT1VSQ0UKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHNwZWNpZnlpbmcgZGF0YWZpbGUocykgdG8gcmVzdG9yZSBmcm9tIGJhY2t1cCBzZXQKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHJlc3RvcmluZyBkYXRhZmlsZSAwMDAxMSB0byAvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9QREIxL3N5c2F1eDAxLmRiZgogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgcmVzdG9yZSBjb21wbGV0ZSwgZWxhcHNlZCB0aW1lOiAwMDowMDoyNgogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiBzdGFydGluZyAgZGF0YWZpbGUgYmFja3VwIHNldCByZXN0b3JlCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICB1c2luZyBuZXR3b3JrIGJhY2t1cCBzZXQgZnJvbSBzZXJ2aWNlIERCX1NPVVJDRQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgc3BlY2lmeWluZyBkYXRhZmlsZShzKSB0byByZXN0b3JlIGZyb20gYmFja3VwIHNldAogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgcmVzdG9yaW5nIGRhdGFmaWxlIDAwMDEyIHRvIC9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL1BEQjEvUERCMV91c2VyczAxLmRiZgogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgcmVzdG9yZSBjb21wbGV0ZSwgZWxhcHNlZCB0aW1lOiAwMDowMDowMQogICBGaW5pc2hlZCByZXN0b3JlIGF0ICAxMC1ERUMtMTQKc3FsIHN0YXRlbWVudDogYWx0ZXIgc3lzdGVtICBhcmNoaXZlIGxvZyBjdXJyZW50CiAgIGN1cnJlbnQgbG9nIGFyY2hpdmVkCmNvbnRlbnRzIG9mIE1lbW9yeSBTY3JpcHQ6CiAgIHsKICAgcmVzdG9yZSBjbG9uZSBmb3JjZSBmcm9tIHNlcnZpY2UgICdEQl9TT1VSQ0UnCiAgIGFyY2hpdmVsb2cgZnJvbSBzY24gIDI1NzkwODk7CiAgIHN3aXRjaCBjbG9uZSBkYXRhZmlsZSBhbGw7CiAgIH0KICAgZXhlY3V0aW5nIE1lbW9yeSBTY3JpcHQKU3RhcnRpbmcgcmVzdG9yZSBhdCAgMTAtREVDLTE0CiAgIHVzaW5nIGNoYW5uZWwgIE9SQV9BVVhfRElTS18xCmNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICBzdGFydGluZyBhcmNoaXZlZCBsb2cgcmVzdG9yZSB0byBkZWZhdWx0IGRlc3RpbmF0aW9uCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICB1c2luZyBuZXR3b3JrIGJhY2t1cCBzZXQgZnJvbSBzZXJ2aWNlIERCX1NPVVJDRQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgcmVzdG9yaW5nIGFyY2hpdmVkIGxvZwogICBhcmNoaXZlZCBsb2cgdGhyZWFkPTEgIHNlcXVlbmNlPTIwOAogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgcmVzdG9yZSBjb21wbGV0ZSwgZWxhcHNlZCB0aW1lOiAwMDowMDowMQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgc3RhcnRpbmcgYXJjaGl2ZWQgbG9nIHJlc3RvcmUgdG8gZGVmYXVsdCBkZXN0aW5hdGlvbgogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgdXNpbmcgbmV0d29yayBiYWNrdXAgc2V0IGZyb20gc2VydmljZSBEQl9TT1VSQ0UKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHJlc3RvcmluZyBhcmNoaXZlZCBsb2cKICAgYXJjaGl2ZWQgbG9nIHRocmVhZD0xICBzZXF1ZW5jZT0yMDkKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHJlc3RvcmUgY29tcGxldGUsIGVsYXBzZWQgdGltZTogMDA6MDA6MDEKICAgRmluaXNoZWQgcmVzdG9yZSBhdCAgMTAtREVDLTE0CmRhdGFmaWxlIDEgc3dpdGNoZWQgdG8gIGRhdGFmaWxlIGNvcHkKICAgaW5wdXQgZGF0YWZpbGUgY29weSAgUkVDSUQ9MTAgU1RBTVA9ODY1OTc3MDU0IGZpbGUgIG5hbWU9L29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvc3lzdGVtMDEuZGJmCiAgIGRhdGFmaWxlIDIgc3dpdGNoZWQgdG8gIGRhdGFmaWxlIGNvcHkKICAgaW5wdXQgZGF0YWZpbGUgY29weSAgUkVDSUQ9MTEgU1RBTVA9ODY1OTc3MDU0IGZpbGUgIG5hbWU9L29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvcGRic2VlZC9zeXN0ZW0wMS5kYmYKICAgZGF0YWZpbGUgMyBzd2l0Y2hlZCB0byAgZGF0YWZpbGUgY29weQogICBpbnB1dCBkYXRhZmlsZSBjb3B5ICBSRUNJRD0xMiBTVEFNUD04NjU5NzcwNTQgZmlsZSAgbmFtZT0vb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9zeXNhdXgwMS5kYmYKICAgZGF0YWZpbGUgNCBzd2l0Y2hlZCB0byAgZGF0YWZpbGUgY29weQogICBpbnB1dCBkYXRhZmlsZSBjb3B5ICBSRUNJRD0xMyBTVEFNUD04NjU5NzcwNTQgZmlsZSAgbmFtZT0vb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9wZGJzZWVkL3N5c2F1eDAxLmRiZgogICBkYXRhZmlsZSA1IHN3aXRjaGVkIHRvICBkYXRhZmlsZSBjb3B5CiAgIGlucHV0IGRhdGFmaWxlIGNvcHkgIFJFQ0lEPTE0IFNUQU1QPTg2NTk3NzA1NCBmaWxlICBuYW1lPS9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3VuZG90YnMwMS5kYmYKICAgZGF0YWZpbGUgNiBzd2l0Y2hlZCB0byAgZGF0YWZpbGUgY29weQogICBpbnB1dCBkYXRhZmlsZSBjb3B5ICBSRUNJRD0xNSBTVEFNUD04NjU5NzcwNTQgZmlsZSBuYW1lPS9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3VzZXJzMDEuZGJmCiAgIGRhdGFmaWxlIDEwIHN3aXRjaGVkIHRvICBkYXRhZmlsZSBjb3B5CiAgIGlucHV0IGRhdGFmaWxlIGNvcHkgIFJFQ0lEPTE2IFNUQU1QPTg2NTk3NzA1NCBmaWxlIG5hbWU9L29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvUERCMS9zeXN0ZW0wMS5kYmYKICAgZGF0YWZpbGUgMTEgc3dpdGNoZWQgdG8gIGRhdGFmaWxlIGNvcHkKICAgaW5wdXQgZGF0YWZpbGUgY29weSAgUkVDSUQ9MTcgU1RBTVA9ODY1OTc3MDU0IGZpbGUgIG5hbWU9L29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvUERCMS9zeXNhdXgwMS5kYmYKICAgZGF0YWZpbGUgMTIgc3dpdGNoZWQgdG8gIGRhdGFmaWxlIGNvcHkKICAgaW5wdXQgZGF0YWZpbGUgY29weSAgUkVDSUQ9MTggU1RBTVA9ODY1OTc3MDU0IGZpbGUgbmFtZT0vb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9QREIxL1BEQjFfdXNlcnMwMS5kYmYKY29udGVudHMgb2YgTWVtb3J5IFNjcmlwdDoKICAgewogICBzZXQgdW50aWwgc2NuICAyNTc5MzkxOwogICByZWNvdmVyCiAgIGNsb25lIGRhdGFiYXNlCiAgIGRlbGV0ZSBhcmNoaXZlbG9nCiAgIDsKICAgfQogICBleGVjdXRpbmcgTWVtb3J5IFNjcmlwdApleGVjdXRpbmcgY29tbWFuZDogU0VUICB1bnRpbCBjbGF1c2UKU3RhcnRpbmcgcmVjb3ZlciBhdCAxMC1ERUMtMTQKICAgdXNpbmcgY2hhbm5lbCAgT1JBX0FVWF9ESVNLXzEKc3RhcnRpbmcgbWVkaWEgcmVjb3ZlcnkKYXJjaGl2ZWQgbG9nIGZvciB0aHJlYWQgMSAgd2l0aCBzZXF1ZW5jZSAyMDggaXMgYWxyZWFkeSBvbiBkaXNrIGFzIGZpbGUgIAovb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9GUkEvMV8yMDhfODU3NDc1MzEwLmRiZgogICBhcmNoaXZlZCBsb2cgZm9yIHRocmVhZCAxICB3aXRoIHNlcXVlbmNlIDIwOSBpcyBhbHJlYWR5IG9uIGRpc2sgYXMgZmlsZSAgCi9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL0ZSQS8xXzIwOV84NTc0NzUzMTAuZGJmCiAgIGFyY2hpdmVkIGxvZyBmaWxlICBuYW1lPS9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL0ZSQS8xXzIwOF84NTc0NzUzMTAuZGJmIHRocmVhZD0xICBzZXF1ZW5jZT0yMDgKICAgYXJjaGl2ZWQgbG9nIGZpbGUgIG5hbWU9L29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvRlJBLzFfMjA5Xzg1NzQ3NTMxMC5kYmYgdGhyZWFkPTEgIHNlcXVlbmNlPTIwOQogICBtZWRpYSByZWNvdmVyeSBjb21wbGV0ZSwgIGVsYXBzZWQgdGltZTogMDA6MDA6MDEKICAgRmluaXNoZWQgcmVjb3ZlciBhdCAgMTAtREVDLTE0CiAgIE9yYWNsZSBpbnN0YW5jZSBzdGFydGVkClRvdGFsIFN5c3RlbSBHbG9iYWwgIEFyZWEgICAgIDU5OTc4NTQ3MiBieXRlcwpGaXhlZCBTaXplICAgICAgICAgICAgICAgICAgICAgMjkyNzE5MiBieXRlcwogICBWYXJpYWJsZSBTaXplICAgICAgICAgICAgICAgIDI4MTAxOTgxNiBieXRlcwogICBEYXRhYmFzZSBCdWZmZXJzICAgICAgICAgICAgIDMxMDM3ODQ5NiBieXRlcwogICBSZWRvIEJ1ZmZlcnMgICAgICAgICAgICAgICAgICAgNTQ1OTk2OCBieXRlcwpjb250ZW50cyBvZiBNZW1vcnkgU2NyaXB0OgogICB7CiAgIHNxbCBjbG9uZSAiYWx0ZXIgc3lzdGVtIHNldCAgZGJfbmFtZSA9CiAgICcnQ0RCMScnIGNvbW1lbnQ9CiAgICcnUmVzZXQgdG8gb3JpZ2luYWwgdmFsdWUgYnkgUk1BTicnICBzY29wZT1zcGZpbGUiOwogICBzcWwgY2xvbmUgImFsdGVyIHN5c3RlbSByZXNldCAgZGJfdW5pcXVlX25hbWUgc2NvcGU9c3BmaWxlIjsKICAgfQogICBleGVjdXRpbmcgTWVtb3J5IFNjcmlwdApzcWwgc3RhdGVtZW50OiBhbHRlciBzeXN0ZW0gIHNldCAgZGJfbmFtZSA9ICAnJ0NEQjEnJyBjb21tZW50PSAnJ1Jlc2V0IHRvIG9yaWdpbmFsIHZhbHVlICBieSBSTUFOJycgc2NvcGU9c3BmaWxlCnNxbCBzdGF0ZW1lbnQ6IGFsdGVyIHN5c3RlbSAgcmVzZXQgIGRiX3VuaXF1ZV9uYW1lIHNjb3BlPXNwZmlsZQogICBPcmFjbGUgaW5zdGFuY2Ugc3RhcnRlZApUb3RhbCBTeXN0ZW0gR2xvYmFsICBBcmVhICAgICA1OTk3ODU0NzIgYnl0ZXMKRml4ZWQgU2l6ZSAgICAgICAgICAgICAgICAgICAgIDI5MjcxOTIgYnl0ZXMKICAgVmFyaWFibGUgU2l6ZSAgICAgICAgICAgICAgICAyODEwMTk4MTYgYnl0ZXMKICAgRGF0YWJhc2UgQnVmZmVycyAgICAgICAgICAgICAzMTAzNzg0OTYgYnl0ZXMKICAgUmVkbyBCdWZmZXJzICAgICAgICAgICAgICAgICAgIDU0NTk5NjggYnl0ZXMKICAgc3FsIHN0YXRlbWVudDogQ1JFQVRFICBDT05UUk9MRklMRSBSRVVTRSBTRVQgREFUQUJBU0UgIkNEQjEiIFJFU0VUTE9HUyBBUkNISVZFTE9HCiAgIE1BWExPR0ZJTEVTICAgICAxNgogICBNQVhMT0dNRU1CRVJTICAgICAgMwogICBNQVhEQVRBRklMRVMgICAgIDEwMjQKICAgTUFYSU5TVEFOQ0VTICAgICA4CiAgIE1BWExPR0hJU1RPUlkgICAgICAyOTIKICAgTE9HRklMRQogICBHUk9VUCAgICAxICggJy9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3JlZG8wMS5sb2cnICkgU0laRSA1MCBNICBSRVVTRSwKICAgR1JPVVAgICAgMiAoICcvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9yZWRvMDIubG9nJyApIFNJWkUgNTAgTSAgUkVVU0UsCiAgIEdST1VQICAgIDMgKCAnL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvcmVkbzAzLmxvZycgKSBTSVpFIDUwIE0gIFJFVVNFCiAgIERBVEFGSUxFCiAgICcvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9zeXN0ZW0wMS5kYmYnLAogICAnL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvcGRic2VlZC9zeXN0ZW0wMS5kYmYnLAogICAnL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvUERCMS9zeXN0ZW0wMS5kYmYnCiAgIENIQVJBQ1RFUiBTRVQgV0U4TVNXSU4xMjUyCmNvbnRlbnRzIG9mIE1lbW9yeSBTY3JpcHQ6CiAgIHsKICAgc2V0IG5ld25hbWUgZm9yIHRlbXBmaWxlICAxIHRvCiAgICIvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS90ZW1wMDEuZGJmIjsKICAgc2V0IG5ld25hbWUgZm9yIHRlbXBmaWxlICAyIHRvCiAgICIvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9wZGJzZWVkL3RlbXAwMS5kYmYiOwogICBzZXQgbmV3bmFtZSBmb3IgdGVtcGZpbGUgIDMgdG8KICAgIi9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL1BEQjEvdGVtcDAxLmRiZiI7CiAgIHN3aXRjaCBjbG9uZSB0ZW1wZmlsZSBhbGw7CiAgIGNhdGFsb2cgY2xvbmUgZGF0YWZpbGVjb3B5ICAgIi9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3N5c2F1eDAxLmRiZiIsCiAgICIvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9wZGJzZWVkL3N5c2F1eDAxLmRiZiIsCiAgICIvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS91bmRvdGJzMDEuZGJmIiwKICAgIi9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3VzZXJzMDEuZGJmIiwKICAgIi9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL1BEQjEvc3lzYXV4MDEuZGJmIiwKICAgIi9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL1BEQjEvUERCMV91c2VyczAxLmRiZiI7CiAgIHN3aXRjaCBjbG9uZSBkYXRhZmlsZSBhbGw7CiAgIH0KICAgZXhlY3V0aW5nIE1lbW9yeSBTY3JpcHQKZXhlY3V0aW5nIGNvbW1hbmQ6IFNFVCAgTkVXTkFNRQpleGVjdXRpbmcgY29tbWFuZDogU0VUICBORVdOQU1FCmV4ZWN1dGluZyBjb21tYW5kOiBTRVQgIE5FV05BTUUKcmVuYW1lZCB0ZW1wZmlsZSAxIHRvICAvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS90ZW1wMDEuZGJmIGluIGNvbnRyb2wgZmlsZQogICByZW5hbWVkIHRlbXBmaWxlIDIgdG8gIC9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3BkYnNlZWQvdGVtcDAxLmRiZiBpbiBjb250cm9sIGZpbGUKICAgcmVuYW1lZCB0ZW1wZmlsZSAzIHRvICAvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9QREIxL3RlbXAwMS5kYmYgaW4gY29udHJvbCBmaWxlCmNhdGFsb2dlZCBkYXRhZmlsZSBjb3B5CiAgIGRhdGFmaWxlIGNvcHkgZmlsZSAgbmFtZT0vb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9zeXNhdXgwMS5kYmYgUkVDSUQ9MSBTVEFNUD04NjU5NzcwODIKICAgY2F0YWxvZ2VkIGRhdGFmaWxlIGNvcHkKICAgZGF0YWZpbGUgY29weSBmaWxlICBuYW1lPS9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3BkYnNlZWQvc3lzYXV4MDEuZGJmIFJFQ0lEPTIgIFNUQU1QPTg2NTk3NzA4MgogICBjYXRhbG9nZWQgZGF0YWZpbGUgY29weQogICBkYXRhZmlsZSBjb3B5IGZpbGUgIG5hbWU9L29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvdW5kb3RiczAxLmRiZiBSRUNJRD0zIFNUQU1QPTg2NTk3NzA4MgogICBjYXRhbG9nZWQgZGF0YWZpbGUgY29weQogICBkYXRhZmlsZSBjb3B5IGZpbGUgIG5hbWU9L29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvdXNlcnMwMS5kYmYgUkVDSUQ9NCBTVEFNUD04NjU5NzcwODIKICAgY2F0YWxvZ2VkIGRhdGFmaWxlIGNvcHkKICAgZGF0YWZpbGUgY29weSBmaWxlICBuYW1lPS9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL1BEQjEvc3lzYXV4MDEuZGJmIFJFQ0lEPTUgU1RBTVA9ODY1OTc3MDgyCiAgIGNhdGFsb2dlZCBkYXRhZmlsZSBjb3B5CiAgIGRhdGFmaWxlIGNvcHkgZmlsZSAgbmFtZT0vb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9QREIxL1BEQjFfdXNlcnMwMS5kYmYgUkVDSUQ9NiAgU1RBTVA9ODY1OTc3MDgyCmRhdGFmaWxlIDMgc3dpdGNoZWQgdG8gIGRhdGFmaWxlIGNvcHkKICAgaW5wdXQgZGF0YWZpbGUgY29weSBSRUNJRD0xICBTVEFNUD04NjU5NzcwODIgZmlsZSBuYW1lPS9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3N5c2F1eDAxLmRiZgogICBkYXRhZmlsZSA0IHN3aXRjaGVkIHRvICBkYXRhZmlsZSBjb3B5CiAgIGlucHV0IGRhdGFmaWxlIGNvcHkgUkVDSUQ9MiAgU1RBTVA9ODY1OTc3MDgyIGZpbGUgbmFtZT0vb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9wZGJzZWVkL3N5c2F1eDAxLmRiZgogICBkYXRhZmlsZSA1IHN3aXRjaGVkIHRvICBkYXRhZmlsZSBjb3B5CiAgIGlucHV0IGRhdGFmaWxlIGNvcHkgUkVDSUQ9MyAgU1RBTVA9ODY1OTc3MDgyIGZpbGUgbmFtZT0vb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS91bmRvdGJzMDEuZGJmCiAgIGRhdGFmaWxlIDYgc3dpdGNoZWQgdG8gIGRhdGFmaWxlIGNvcHkKICAgaW5wdXQgZGF0YWZpbGUgY29weSBSRUNJRD00ICBTVEFNUD04NjU5NzcwODIgZmlsZSBuYW1lPS9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3VzZXJzMDEuZGJmCiAgIGRhdGFmaWxlIDExIHN3aXRjaGVkIHRvICBkYXRhZmlsZSBjb3B5CiAgIGlucHV0IGRhdGFmaWxlIGNvcHkgUkVDSUQ9NSAgU1RBTVA9ODY1OTc3MDgyIGZpbGUgbmFtZT0vb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9QREIxL3N5c2F1eDAxLmRiZgogICBkYXRhZmlsZSAxMiBzd2l0Y2hlZCB0byAgZGF0YWZpbGUgY29weQogICBpbnB1dCBkYXRhZmlsZSBjb3B5IFJFQ0lEPTYgIFNUQU1QPTg2NTk3NzA4MiBmaWxlICBuYW1lPS9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL1BEQjEvUERCMV91c2VyczAxLmRiZgpjb250ZW50cyBvZiBNZW1vcnkgU2NyaXB0OgogICB7CiAgIEFsdGVyIGNsb25lIGRhdGFiYXNlIG9wZW4gcmVzZXRsb2dzOwogICB9CiAgIGV4ZWN1dGluZyBNZW1vcnkgU2NyaXB0CmRhdGFiYXNlIG9wZW5lZApjb250ZW50cyBvZiBNZW1vcnkgU2NyaXB0OgogICB7CiAgIHNxbCBjbG9uZSAiYWx0ZXIgcGx1Z2dhYmxlIGRhdGFiYXNlIGFsbCAgb3BlbiI7CiAgIH0KICAgZXhlY3V0aW5nIE1lbW9yeSBTY3JpcHQKc3FsIHN0YXRlbWVudDogYWx0ZXIgIHBsdWdnYWJsZSBkYXRhYmFzZSBhbGwgb3BlbgogICBDYW5ub3QgcmVtb3ZlIGNyZWF0ZWQgIHNlcnZlciBwYXJhbWV0ZXIgZmlsZQogICBGaW5pc2hlZCBEdXBsaWNhdGUgRGIgYXQgIDEwLURFQy0xNApSTUFOPg==[/et_pb_dmb_code_snippet]

Executando Active Duplicate utilizando Pull-based Method

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”W0NEQjEub3JhY2xlQHByaW1hcnkgfl0kICBybWFuIHRhcmdldCBzeXMvb3JhY2xlQERCX1NPVVJDRSBhdXhpbGlhcnkgICBzeXMvb3JhY2xlQERCX0FVWElMSUFSWQpSZWNvdmVyeSBNYW5hZ2VyOiBSZWxlYXNlICAxMi4xLjAuMi4wIC0gUHJvZHVjdGlvbiBvbiBXZWQgRGVjIDEwIDIxOjE3OjMwIDIwMTQKQ29weXJpZ2h0IChjKSAxOTgyLCAyMDE0LCAgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gIEFsbCByaWdodHMgIHJlc2VydmVkLgpjb25uZWN0ZWQgdG8gdGFyZ2V0ICBkYXRhYmFzZTogQ0RCMSAoREJJRD04MzExOTI3NTApCiAgIGNvbm5lY3RlZCB0byBhdXhpbGlhcnkgIGRhdGFiYXNlOiBDREIxIChub3QgbW91bnRlZCkKUk1BTj4gZHVwbGljYXRlIHRhcmdldCAgZGF0YWJhc2UgdG8gQ0RCMSBmcm9tIGFjdGl2ZSBkYXRhYmFzZSB1c2luZyBDT01QUkVTU0VEIEJBQ0tVUFNFVCA7ClN0YXJ0aW5nIER1cGxpY2F0ZSBEYiBhdCAgMTAtREVDLTE0CiAgIHVzaW5nIHRhcmdldCBkYXRhYmFzZSAgY29udHJvbCBmaWxlIGluc3RlYWQgb2YgcmVjb3ZlcnkgY2F0YWxvZwogICBhbGxvY2F0ZWQgY2hhbm5lbDogIE9SQV9BVVhfRElTS18xCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICBTSUQ9MjMgZGV2aWNlIHR5cGU9RElTSwogICBjdXJyZW50IGxvZyBhcmNoaXZlZApjb250ZW50cyBvZiBNZW1vcnkgU2NyaXB0OgogICB7CiAgIHNxbCBjbG9uZSAiYWx0ZXIgc3lzdGVtIHNldCAgZGJfbmFtZSA9CiAgICcnQ0RCMScnIGNvbW1lbnQ9CiAgICcnTW9kaWZpZWQgYnkgUk1BTiBkdXBsaWNhdGUnJyAgc2NvcGU9c3BmaWxlIjsKICAgc3FsIGNsb25lICJhbHRlciBzeXN0ZW0gc2V0ICBkYl91bmlxdWVfbmFtZSA9CiAgICcnQ0RCMScnIGNvbW1lbnQ9CiAgICcnTW9kaWZpZWQgYnkgUk1BTiBkdXBsaWNhdGUnJyAgc2NvcGU9c3BmaWxlIjsKICAgc2h1dGRvd24gY2xvbmUgaW1tZWRpYXRlOwogICBzdGFydHVwIGNsb25lIGZvcmNlIG5vbW91bnQKICAgcmVzdG9yZSBjbG9uZSBmcm9tIHNlcnZpY2UgICdEQl9TT1VSQ0UnIHVzaW5nIGNvbXByZXNzZWQgYmFja3Vwc2V0CiAgIHByaW1hcnkgY29udHJvbGZpbGU7CiAgIGFsdGVyIGNsb25lIGRhdGFiYXNlIG1vdW50OwogICB9CiAgIGV4ZWN1dGluZyBNZW1vcnkgU2NyaXB0CnNxbCBzdGF0ZW1lbnQ6IGFsdGVyIHN5c3RlbSAgc2V0ICBkYl9uYW1lID0gICcnQ0RCMScnIGNvbW1lbnQ9ICcnTW9kaWZpZWQgYnkgUk1BTiAgZHVwbGljYXRlJycgc2NvcGU9c3BmaWxlCnNxbCBzdGF0ZW1lbnQ6IGFsdGVyIHN5c3RlbSAgc2V0ICBkYl91bmlxdWVfbmFtZSA9ICAnJ0NEQjEnJyBjb21tZW50PSAnJ01vZGlmaWVkIGJ5IFJNQU4gIGR1cGxpY2F0ZScnIHNjb3BlPXNwZmlsZQpPcmFjbGUgaW5zdGFuY2Ugc2h1dCBkb3duCk9yYWNsZSBpbnN0YW5jZSBzdGFydGVkClRvdGFsIFN5c3RlbSBHbG9iYWwgIEFyZWEgICAgIDU5OTc4NTQ3MiBieXRlcwpGaXhlZCBTaXplICAgICAgICAgICAgICAgICAgICAgMjkyNzE5MiBieXRlcwogICBWYXJpYWJsZSBTaXplICAgICAgICAgICAgICAgIDI4MTAxOTgxNiBieXRlcwogICBEYXRhYmFzZSBCdWZmZXJzICAgICAgICAgICAgIDMxMDM3ODQ5NiBieXRlcwogICBSZWRvIEJ1ZmZlcnMgICAgICAgICAgICAgICAgICAgNTQ1OTk2OCBieXRlcwpTdGFydGluZyByZXN0b3JlIGF0ICAxMC1ERUMtMTQKICAgYWxsb2NhdGVkIGNoYW5uZWw6ICBPUkFfQVVYX0RJU0tfMQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgU0lEPTIyIGRldmljZSB0eXBlPURJU0sKY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHN0YXJ0aW5nIGRhdGFmaWxlIGJhY2t1cCBzZXQgcmVzdG9yZQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgdXNpbmcgY29tcHJlc3NlZCBuZXR3b3JrIGJhY2t1cCBzZXQgZnJvbSBzZXJ2aWNlIERCX1NPVVJDRQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgcmVzdG9yaW5nIGNvbnRyb2wgZmlsZQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgcmVzdG9yZSBjb21wbGV0ZSwgZWxhcHNlZCB0aW1lOiAwMDowMDowMwogICBvdXRwdXQgZmlsZSAgbmFtZT0vb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9jb250cm9sMDEuY3RsCiAgIEZpbmlzaGVkIHJlc3RvcmUgYXQgIDEwLURFQy0xNApkYXRhYmFzZSBtb3VudGVkCmNvbnRlbnRzIG9mIE1lbW9yeSBTY3JpcHQ6CiAgIHsKICAgc2V0IG5ld25hbWUgZm9yIGRhdGFmaWxlICAxIHRvCiAgICIvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9zeXN0ZW0wMS5kYmYiOwogICBzZXQgbmV3bmFtZSBmb3IgZGF0YWZpbGUgIDIgdG8KICAgIi9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3BkYnNlZWQvc3lzdGVtMDEuZGJmIjsKICAgc2V0IG5ld25hbWUgZm9yIGRhdGFmaWxlICAzIHRvCiAgICIvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9zeXNhdXgwMS5kYmYiOwogICBzZXQgbmV3bmFtZSBmb3IgZGF0YWZpbGUgIDQgdG8KICAgIi9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3BkYnNlZWQvc3lzYXV4MDEuZGJmIjsKICAgc2V0IG5ld25hbWUgZm9yIGRhdGFmaWxlICA1IHRvCiAgICIvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS91bmRvdGJzMDEuZGJmIjsKICAgc2V0IG5ld25hbWUgZm9yIGRhdGFmaWxlICA2IHRvCiAgICIvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS91c2VyczAxLmRiZiI7CiAgIHNldCBuZXduYW1lIGZvciBkYXRhZmlsZSAgMTAgdG8KICAgIi9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL1BEQjEvc3lzdGVtMDEuZGJmIjsKICAgc2V0IG5ld25hbWUgZm9yIGRhdGFmaWxlICAxMSB0bwogICAiL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvUERCMS9zeXNhdXgwMS5kYmYiOwogICBzZXQgbmV3bmFtZSBmb3IgZGF0YWZpbGUgIDEyIHRvCiAgICIvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9QREIxL1BEQjFfdXNlcnMwMS5kYmYiOwogICByZXN0b3JlCiAgIGZyb20gc2VydmljZSAgICdEQl9TT1VSQ0UnICAgdXNpbmcgY29tcHJlc3NlZCAgYmFja3Vwc2V0CiAgIGNsb25lIGRhdGFiYXNlCiAgIDsKICAgc3FsICdhbHRlciBzeXN0ZW0gYXJjaGl2ZSBsb2cgY3VycmVudCc7CiAgIH0KICAgZXhlY3V0aW5nIE1lbW9yeSBTY3JpcHQKZXhlY3V0aW5nIGNvbW1hbmQ6IFNFVCAgTkVXTkFNRQpleGVjdXRpbmcgY29tbWFuZDogU0VUICBORVdOQU1FCmV4ZWN1dGluZyBjb21tYW5kOiBTRVQgIE5FV05BTUUKZXhlY3V0aW5nIGNvbW1hbmQ6IFNFVCAgTkVXTkFNRQpleGVjdXRpbmcgY29tbWFuZDogU0VUICBORVdOQU1FCmV4ZWN1dGluZyBjb21tYW5kOiBTRVQgIE5FV05BTUUKZXhlY3V0aW5nIGNvbW1hbmQ6IFNFVCAgTkVXTkFNRQpleGVjdXRpbmcgY29tbWFuZDogU0VUICBORVdOQU1FCmV4ZWN1dGluZyBjb21tYW5kOiBTRVQgIE5FV05BTUUKU3RhcnRpbmcgcmVzdG9yZSBhdCAgMTAtREVDLTE0CiAgIHVzaW5nIGNoYW5uZWwgIE9SQV9BVVhfRElTS18xCmNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICBzdGFydGluZyBkYXRhZmlsZSBiYWNrdXAgc2V0IHJlc3RvcmUKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHVzaW5nIGNvbXByZXNzZWQgbmV0d29yayBiYWNrdXAgc2V0IGZyb20gc2VydmljZSBEQl9TT1VSQ0UKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHNwZWNpZnlpbmcgZGF0YWZpbGUocykgdG8gcmVzdG9yZSBmcm9tIGJhY2t1cCBzZXQKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHJlc3RvcmluZyBkYXRhZmlsZSAwMDAwMSB0byAvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9zeXN0ZW0wMS5kYmYKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHJlc3RvcmUgY29tcGxldGUsIGVsYXBzZWQgdGltZTogMDA6MDE6MDUKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHN0YXJ0aW5nIGRhdGFmaWxlIGJhY2t1cCBzZXQgcmVzdG9yZQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgdXNpbmcgY29tcHJlc3NlZCBuZXR3b3JrIGJhY2t1cCBzZXQgZnJvbSBzZXJ2aWNlIERCX1NPVVJDRQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgc3BlY2lmeWluZyBkYXRhZmlsZShzKSB0byByZXN0b3JlIGZyb20gYmFja3VwIHNldAogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgcmVzdG9yaW5nIGRhdGFmaWxlIDAwMDAyIHRvICAvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9wZGJzZWVkL3N5c3RlbTAxLmRiZgogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgcmVzdG9yZSBjb21wbGV0ZSwgZWxhcHNlZCB0aW1lOiAwMDowMDoyNQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgc3RhcnRpbmcgZGF0YWZpbGUgYmFja3VwIHNldCByZXN0b3JlCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICB1c2luZyBjb21wcmVzc2VkIG5ldHdvcmsgYmFja3VwIHNldCBmcm9tIHNlcnZpY2UgREJfU09VUkNFCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICBzcGVjaWZ5aW5nIGRhdGFmaWxlKHMpIHRvIHJlc3RvcmUgZnJvbSBiYWNrdXAgc2V0CiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICByZXN0b3JpbmcgZGF0YWZpbGUgMDAwMDMgdG8gL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvc3lzYXV4MDEuZGJmCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICByZXN0b3JlIGNvbXBsZXRlLCBlbGFwc2VkIHRpbWU6IDAwOjAwOjU1CiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICBzdGFydGluZyBkYXRhZmlsZSBiYWNrdXAgc2V0IHJlc3RvcmUKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHVzaW5nIGNvbXByZXNzZWQgbmV0d29yayBiYWNrdXAgc2V0IGZyb20gc2VydmljZSBEQl9TT1VSQ0UKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHNwZWNpZnlpbmcgZGF0YWZpbGUocykgdG8gcmVzdG9yZSBmcm9tIGJhY2t1cCBzZXQKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHJlc3RvcmluZyBkYXRhZmlsZSAwMDAwNCB0byAgL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvcGRic2VlZC9zeXNhdXgwMS5kYmYKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHJlc3RvcmUgY29tcGxldGUsIGVsYXBzZWQgdGltZTogMDA6MDA6NDUKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHN0YXJ0aW5nIGRhdGFmaWxlIGJhY2t1cCBzZXQgcmVzdG9yZQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgdXNpbmcgY29tcHJlc3NlZCBuZXR3b3JrIGJhY2t1cCBzZXQgZnJvbSBzZXJ2aWNlIERCX1NPVVJDRQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgc3BlY2lmeWluZyBkYXRhZmlsZShzKSB0byByZXN0b3JlIGZyb20gYmFja3VwIHNldAogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgcmVzdG9yaW5nIGRhdGFmaWxlIDAwMDA1IHRvIC9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3VuZG90YnMwMS5kYmYKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHJlc3RvcmUgY29tcGxldGUsIGVsYXBzZWQgdGltZTogMDA6MDA6MjUKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHN0YXJ0aW5nIGRhdGFmaWxlIGJhY2t1cCBzZXQgcmVzdG9yZQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgdXNpbmcgY29tcHJlc3NlZCBuZXR3b3JrIGJhY2t1cCBzZXQgZnJvbSBzZXJ2aWNlIERCX1NPVVJDRQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgc3BlY2lmeWluZyBkYXRhZmlsZShzKSB0byByZXN0b3JlIGZyb20gYmFja3VwIHNldAogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgcmVzdG9yaW5nIGRhdGFmaWxlIDAwMDA2IHRvIC9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3VzZXJzMDEuZGJmCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICByZXN0b3JlIGNvbXBsZXRlLCBlbGFwc2VkIHRpbWU6IDAwOjAwOjAyCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICBzdGFydGluZyBkYXRhZmlsZSBiYWNrdXAgc2V0IHJlc3RvcmUKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHVzaW5nIGNvbXByZXNzZWQgbmV0d29yayBiYWNrdXAgc2V0IGZyb20gc2VydmljZSBEQl9TT1VSQ0UKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHNwZWNpZnlpbmcgZGF0YWZpbGUocykgdG8gcmVzdG9yZSBmcm9tIGJhY2t1cCBzZXQKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHJlc3RvcmluZyBkYXRhZmlsZSAwMDAxMCB0byAvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9QREIxL3N5c3RlbTAxLmRiZgogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgcmVzdG9yZSBjb21wbGV0ZSwgZWxhcHNlZCB0aW1lOiAwMDowMDoyNQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgc3RhcnRpbmcgZGF0YWZpbGUgYmFja3VwIHNldCByZXN0b3JlCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICB1c2luZyBjb21wcmVzc2VkIG5ldHdvcmsgYmFja3VwIHNldCBmcm9tIHNlcnZpY2UgREJfU09VUkNFCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICBzcGVjaWZ5aW5nIGRhdGFmaWxlKHMpIHRvIHJlc3RvcmUgZnJvbSBiYWNrdXAgc2V0CiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICByZXN0b3JpbmcgZGF0YWZpbGUgMDAwMTEgdG8gL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvUERCMS9zeXNhdXgwMS5kYmYKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHJlc3RvcmUgY29tcGxldGUsIGVsYXBzZWQgdGltZTogMDA6MDA6NDUKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHN0YXJ0aW5nIGRhdGFmaWxlIGJhY2t1cCBzZXQgcmVzdG9yZQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgdXNpbmcgY29tcHJlc3NlZCBuZXR3b3JrIGJhY2t1cCBzZXQgZnJvbSBzZXJ2aWNlIERCX1NPVVJDRQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgc3BlY2lmeWluZyBkYXRhZmlsZShzKSB0byByZXN0b3JlIGZyb20gYmFja3VwIHNldAogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgcmVzdG9yaW5nIGRhdGFmaWxlIDAwMDEyIHRvIC9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL1BEQjEvUERCMV91c2VyczAxLmRiZgogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgcmVzdG9yZSBjb21wbGV0ZSwgZWxhcHNlZCB0aW1lOiAwMDowMDowMQogICBGaW5pc2hlZCByZXN0b3JlIGF0ICAxMC1ERUMtMTQKc3FsIHN0YXRlbWVudDogYWx0ZXIgc3lzdGVtICBhcmNoaXZlIGxvZyBjdXJyZW50CiAgIGN1cnJlbnQgbG9nIGFyY2hpdmVkCmNvbnRlbnRzIG9mIE1lbW9yeSBTY3JpcHQ6CiAgIHsKICAgcmVzdG9yZSBjbG9uZSBmb3JjZSBmcm9tIHNlcnZpY2UgICdEQl9TT1VSQ0UnIHVzaW5nIGNvbXByZXNzZWQgYmFja3Vwc2V0CiAgIGFyY2hpdmVsb2cgZnJvbSBzY24gIDI1Nzk2Mjc7CiAgIHN3aXRjaCBjbG9uZSBkYXRhZmlsZSBhbGw7CiAgIH0KICAgZXhlY3V0aW5nIE1lbW9yeSBTY3JpcHQKU3RhcnRpbmcgcmVzdG9yZSBhdCAgMTAtREVDLTE0CiAgIHVzaW5nIGNoYW5uZWwgIE9SQV9BVVhfRElTS18xCmNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICBzdGFydGluZyBhcmNoaXZlZCBsb2cgcmVzdG9yZSB0byBkZWZhdWx0IGRlc3RpbmF0aW9uCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICB1c2luZyBjb21wcmVzc2VkIG5ldHdvcmsgYmFja3VwIHNldCBmcm9tIHNlcnZpY2UgREJfU09VUkNFCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICByZXN0b3JpbmcgYXJjaGl2ZWQgbG9nCiAgIGFyY2hpdmVkIGxvZyB0aHJlYWQ9MSAgc2VxdWVuY2U9MjExCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICByZXN0b3JlIGNvbXBsZXRlLCBlbGFwc2VkIHRpbWU6IDAwOjAwOjAxCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICBzdGFydGluZyBhcmNoaXZlZCBsb2cgcmVzdG9yZSB0byBkZWZhdWx0IGRlc3RpbmF0aW9uCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICB1c2luZyBjb21wcmVzc2VkIG5ldHdvcmsgYmFja3VwIHNldCBmcm9tIHNlcnZpY2UgREJfU09VUkNFCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICByZXN0b3JpbmcgYXJjaGl2ZWQgbG9nCiAgIGFyY2hpdmVkIGxvZyB0aHJlYWQ9MSAgc2VxdWVuY2U9MjEyCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICByZXN0b3JlIGNvbXBsZXRlLCBlbGFwc2VkIHRpbWU6IDAwOjAwOjAxCiAgIEZpbmlzaGVkIHJlc3RvcmUgYXQgIDEwLURFQy0xNApkYXRhZmlsZSAxIHN3aXRjaGVkIHRvICBkYXRhZmlsZSBjb3B5CiAgIGlucHV0IGRhdGFmaWxlIGNvcHkgIFJFQ0lEPTEwIFNUQU1QPTg2NTk3Nzc5OSBmaWxlICBuYW1lPS9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3N5c3RlbTAxLmRiZgogICBkYXRhZmlsZSAyIHN3aXRjaGVkIHRvICBkYXRhZmlsZSBjb3B5CiAgIGlucHV0IGRhdGFmaWxlIGNvcHkgIFJFQ0lEPTExIFNUQU1QPTg2NTk3Nzc5OSBmaWxlICBuYW1lPS9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3BkYnNlZWQvc3lzdGVtMDEuZGJmCiAgIGRhdGFmaWxlIDMgc3dpdGNoZWQgdG8gIGRhdGFmaWxlIGNvcHkKICAgaW5wdXQgZGF0YWZpbGUgY29weSAgUkVDSUQ9MTIgU1RBTVA9ODY1OTc3Nzk5IGZpbGUgbmFtZT0vb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9zeXNhdXgwMS5kYmYKICAgZGF0YWZpbGUgNCBzd2l0Y2hlZCB0byAgZGF0YWZpbGUgY29weQogICBpbnB1dCBkYXRhZmlsZSBjb3B5ICBSRUNJRD0xMyBTVEFNUD04NjU5Nzc3OTkgZmlsZSAgbmFtZT0vb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9wZGJzZWVkL3N5c2F1eDAxLmRiZgogICBkYXRhZmlsZSA1IHN3aXRjaGVkIHRvICBkYXRhZmlsZSBjb3B5CiAgIGlucHV0IGRhdGFmaWxlIGNvcHkgIFJFQ0lEPTE0IFNUQU1QPTg2NTk3Nzc5OSBmaWxlIG5hbWU9L29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvdW5kb3RiczAxLmRiZgogICBkYXRhZmlsZSA2IHN3aXRjaGVkIHRvICBkYXRhZmlsZSBjb3B5CiAgIGlucHV0IGRhdGFmaWxlIGNvcHkgIFJFQ0lEPTE1IFNUQU1QPTg2NTk3Nzc5OSBmaWxlIG5hbWU9L29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvdXNlcnMwMS5kYmYKICAgZGF0YWZpbGUgMTAgc3dpdGNoZWQgdG8gIGRhdGFmaWxlIGNvcHkKICAgaW5wdXQgZGF0YWZpbGUgY29weSAgUkVDSUQ9MTYgU1RBTVA9ODY1OTc3Nzk5IGZpbGUgIG5hbWU9L29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvUERCMS9zeXN0ZW0wMS5kYmYKICAgZGF0YWZpbGUgMTEgc3dpdGNoZWQgdG8gIGRhdGFmaWxlIGNvcHkKICAgaW5wdXQgZGF0YWZpbGUgY29weSAgUkVDSUQ9MTcgU1RBTVA9ODY1OTc3Nzk5IGZpbGUgIG5hbWU9L29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvUERCMS9zeXNhdXgwMS5kYmYKICAgZGF0YWZpbGUgMTIgc3dpdGNoZWQgdG8gIGRhdGFmaWxlIGNvcHkKICAgaW5wdXQgZGF0YWZpbGUgY29weSAgUkVDSUQ9MTggU1RBTVA9ODY1OTc3Nzk5IGZpbGUgIG5hbWU9L29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvUERCMS9QREIxX3VzZXJzMDEuZGJmCmNvbnRlbnRzIG9mIE1lbW9yeSBTY3JpcHQ6CiAgIHsKICAgc2V0IHVudGlsIHNjbiAgMjU3OTg5MTsKICAgcmVjb3ZlcgogICBjbG9uZSBkYXRhYmFzZQogICBkZWxldGUgYXJjaGl2ZWxvZwogICA7CiAgIH0KICAgZXhlY3V0aW5nIE1lbW9yeSBTY3JpcHQKZXhlY3V0aW5nIGNvbW1hbmQ6IFNFVCAgdW50aWwgY2xhdXNlClN0YXJ0aW5nIHJlY292ZXIgYXQgIDEwLURFQy0xNAogICB1c2luZyBjaGFubmVsICBPUkFfQVVYX0RJU0tfMQpzdGFydGluZyBtZWRpYSByZWNvdmVyeQphcmNoaXZlZCBsb2cgZm9yIHRocmVhZCAxICB3aXRoIHNlcXVlbmNlIDIxMSBpcyBhbHJlYWR5IG9uIGRpc2sgYXMgZmlsZSAgCi9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL0ZSQS8xXzIxMV84NTc0NzUzMTAuZGJmCiAgIGFyY2hpdmVkIGxvZyBmb3IgdGhyZWFkIDEgIHdpdGggc2VxdWVuY2UgMjEyIGlzIGFscmVhZHkgb24gZGlzayBhcyBmaWxlICAKL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvRlJBLzFfMjEyXzg1NzQ3NTMxMC5kYmYKICAgYXJjaGl2ZWQgbG9nIGZpbGUgIG5hbWU9L29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvRlJBLzFfMjExXzg1NzQ3NTMxMC5kYmYgdGhyZWFkPTEgIHNlcXVlbmNlPTIxMQogICBhcmNoaXZlZCBsb2cgZmlsZSAgbmFtZT0vb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9GUkEvMV8yMTJfODU3NDc1MzEwLmRiZiB0aHJlYWQ9MSAgc2VxdWVuY2U9MjEyCiAgIG1lZGlhIHJlY292ZXJ5IGNvbXBsZXRlLCAgZWxhcHNlZCB0aW1lOiAwMDowMDowMAogICBGaW5pc2hlZCByZWNvdmVyIGF0ICAxMC1ERUMtMTQKICAgT3JhY2xlIGluc3RhbmNlIHN0YXJ0ZWQKVG90YWwgU3lzdGVtIEdsb2JhbCAgQXJlYSAgICAgNTk5Nzg1NDcyIGJ5dGVzCkZpeGVkIFNpemUgICAgICAgICAgICAgICAgICAgICAyOTI3MTkyIGJ5dGVzCiAgIFZhcmlhYmxlIFNpemUgICAgICAgICAgICAgICAgMjgxMDE5ODE2IGJ5dGVzCiAgIERhdGFiYXNlIEJ1ZmZlcnMgICAgICAgICAgICAgMzEwMzc4NDk2IGJ5dGVzCiAgIFJlZG8gQnVmZmVycyAgICAgICAgICAgICAgICAgICA1NDU5OTY4IGJ5dGVzCmNvbnRlbnRzIG9mIE1lbW9yeSBTY3JpcHQ6CiAgIHsKICAgc3FsIGNsb25lICJhbHRlciBzeXN0ZW0gc2V0ICBkYl9uYW1lID0KICAgJydDREIxJycgY29tbWVudD0KICAgJydSZXNldCB0byBvcmlnaW5hbCB2YWx1ZSBieSBSTUFOJycgIHNjb3BlPXNwZmlsZSI7CiAgIHNxbCBjbG9uZSAiYWx0ZXIgc3lzdGVtIHJlc2V0ICBkYl91bmlxdWVfbmFtZSBzY29wZT1zcGZpbGUiOwogICB9CiAgIGV4ZWN1dGluZyBNZW1vcnkgU2NyaXB0CnNxbCBzdGF0ZW1lbnQ6IGFsdGVyIHN5c3RlbSAgc2V0ICBkYl9uYW1lID0gICcnQ0RCMScnIGNvbW1lbnQ9ICcnUmVzZXQgdG8gb3JpZ2luYWwgdmFsdWUgIGJ5IFJNQU4nJyBzY29wZT1zcGZpbGUKc3FsIHN0YXRlbWVudDogYWx0ZXIgc3lzdGVtICByZXNldCAgZGJfdW5pcXVlX25hbWUgc2NvcGU9c3BmaWxlCiAgIE9yYWNsZSBpbnN0YW5jZSBzdGFydGVkClRvdGFsIFN5c3RlbSBHbG9iYWwgIEFyZWEgICAgIDU5OTc4NTQ3MiBieXRlcwpGaXhlZCBTaXplICAgICAgICAgICAgICAgICAgICAgMjkyNzE5MiBieXRlcwogICBWYXJpYWJsZSBTaXplICAgICAgICAgICAgICAgIDI4MTAxOTgxNiBieXRlcwogICBEYXRhYmFzZSBCdWZmZXJzICAgICAgICAgICAgIDMxMDM3ODQ5NiBieXRlcwogICBSZWRvIEJ1ZmZlcnMgICAgICAgICAgICAgICAgICAgNTQ1OTk2OCBieXRlcwogICBzcWwgc3RhdGVtZW50OiBDUkVBVEUgIENPTlRST0xGSUxFIFJFVVNFIFNFVCBEQVRBQkFTRSAiQ0RCMSIgUkVTRVRMT0dTIEFSQ0hJVkVMT0cKICAgTUFYTE9HRklMRVMgICAgIDE2CiAgIE1BWExPR01FTUJFUlMgICAgICAzCiAgIE1BWERBVEFGSUxFUyAgICAgMTAyNAogICBNQVhJTlNUQU5DRVMgICAgIDgKICAgTUFYTE9HSElTVE9SWSAgICAgIDI5MgogICBMT0dGSUxFCiAgIEdST1VQICAgIDEgKCAnL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvcmVkbzAxLmxvZycgKSBTSVpFIDUwIE0gIFJFVVNFLAogICBHUk9VUCAgICAyICggJy9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3JlZG8wMi5sb2cnICkgU0laRSA1MCBNICBSRVVTRSwKICAgR1JPVVAgICAgMyAoICcvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9yZWRvMDMubG9nJyApIFNJWkUgNTAgTSAgUkVVU0UKICAgREFUQUZJTEUKICAgJy9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3N5c3RlbTAxLmRiZicsCiAgICcvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9wZGJzZWVkL3N5c3RlbTAxLmRiZicsCiAgICcvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9QREIxL3N5c3RlbTAxLmRiZicKICAgQ0hBUkFDVEVSIFNFVCBXRThNU1dJTjEyNTIKY29udGVudHMgb2YgTWVtb3J5IFNjcmlwdDoKICAgewogICBzZXQgbmV3bmFtZSBmb3IgdGVtcGZpbGUgIDEgdG8KICAgIi9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3RlbXAwMS5kYmYiOwogICBzZXQgbmV3bmFtZSBmb3IgdGVtcGZpbGUgIDIgdG8KICAgIi9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3BkYnNlZWQvdGVtcDAxLmRiZiI7CiAgIHNldCBuZXduYW1lIGZvciB0ZW1wZmlsZSAgMyB0bwogICAiL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvUERCMS90ZW1wMDEuZGJmIjsKICAgc3dpdGNoIGNsb25lIHRlbXBmaWxlIGFsbDsKICAgY2F0YWxvZyBjbG9uZSBkYXRhZmlsZWNvcHkgICAiL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvc3lzYXV4MDEuZGJmIiwKICAgIi9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3BkYnNlZWQvc3lzYXV4MDEuZGJmIiwKICAgIi9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3VuZG90YnMwMS5kYmYiLAogICAiL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvdXNlcnMwMS5kYmYiLAogICAiL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvUERCMS9zeXNhdXgwMS5kYmYiLAogICAiL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvUERCMS9QREIxX3VzZXJzMDEuZGJmIjsKICAgc3dpdGNoIGNsb25lIGRhdGFmaWxlIGFsbDsKICAgfQogICBleGVjdXRpbmcgTWVtb3J5IFNjcmlwdApleGVjdXRpbmcgY29tbWFuZDogU0VUICBORVdOQU1FCmV4ZWN1dGluZyBjb21tYW5kOiBTRVQgIE5FV05BTUUKZXhlY3V0aW5nIGNvbW1hbmQ6IFNFVCAgTkVXTkFNRQpyZW5hbWVkIHRlbXBmaWxlIDEgdG8gIC9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3RlbXAwMS5kYmYgaW4gY29udHJvbCBmaWxlCiAgIHJlbmFtZWQgdGVtcGZpbGUgMiB0byAgL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvcGRic2VlZC90ZW1wMDEuZGJmIGluIGNvbnRyb2wgZmlsZQogICByZW5hbWVkIHRlbXBmaWxlIDMgdG8gIC9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL1BEQjEvdGVtcDAxLmRiZiBpbiBjb250cm9sIGZpbGUKY2F0YWxvZ2VkIGRhdGFmaWxlIGNvcHkKICAgZGF0YWZpbGUgY29weSBmaWxlICBuYW1lPS9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3N5c2F1eDAxLmRiZiBSRUNJRD0xIFNUQU1QPTg2NTk3NzgyMgogICBjYXRhbG9nZWQgZGF0YWZpbGUgY29weQogICBkYXRhZmlsZSBjb3B5IGZpbGUgIG5hbWU9L29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvcGRic2VlZC9zeXNhdXgwMS5kYmYgUkVDSUQ9MiAgU1RBTVA9ODY1OTc3ODIyCiAgIGNhdGFsb2dlZCBkYXRhZmlsZSBjb3B5CiAgIGRhdGFmaWxlIGNvcHkgZmlsZSAgbmFtZT0vb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS91bmRvdGJzMDEuZGJmIFJFQ0lEPTMgU1RBTVA9ODY1OTc3ODIyCiAgIGNhdGFsb2dlZCBkYXRhZmlsZSBjb3B5CiAgIGRhdGFmaWxlIGNvcHkgZmlsZSAgbmFtZT0vb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS91c2VyczAxLmRiZiBSRUNJRD00IFNUQU1QPTg2NTk3NzgyMgogICBjYXRhbG9nZWQgZGF0YWZpbGUgY29weQogICBkYXRhZmlsZSBjb3B5IGZpbGUgIG5hbWU9L29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvUERCMS9zeXNhdXgwMS5kYmYgUkVDSUQ9NSBTVEFNUD04NjU5Nzc4MjIKICAgY2F0YWxvZ2VkIGRhdGFmaWxlIGNvcHkKICAgZGF0YWZpbGUgY29weSBmaWxlICBuYW1lPS9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL1BEQjEvUERCMV91c2VyczAxLmRiZiBSRUNJRD02ICBTVEFNUD04NjU5Nzc4MjIKZGF0YWZpbGUgMyBzd2l0Y2hlZCB0byAgZGF0YWZpbGUgY29weQogICBpbnB1dCBkYXRhZmlsZSBjb3B5IFJFQ0lEPTEgIFNUQU1QPTg2NTk3NzgyMiBmaWxlIG5hbWU9L29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvc3lzYXV4MDEuZGJmCiAgIGRhdGFmaWxlIDQgc3dpdGNoZWQgdG8gIGRhdGFmaWxlIGNvcHkKICAgaW5wdXQgZGF0YWZpbGUgY29weSBSRUNJRD0yICBTVEFNUD04NjU5Nzc4MjIgZmlsZSBuYW1lPS9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3BkYnNlZWQvc3lzYXV4MDEuZGJmCiAgIGRhdGFmaWxlIDUgc3dpdGNoZWQgdG8gIGRhdGFmaWxlIGNvcHkKICAgaW5wdXQgZGF0YWZpbGUgY29weSBSRUNJRD0zICBTVEFNUD04NjU5Nzc4MjIgZmlsZSBuYW1lPS9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3VuZG90YnMwMS5kYmYKICAgZGF0YWZpbGUgNiBzd2l0Y2hlZCB0byAgZGF0YWZpbGUgY29weQogICBpbnB1dCBkYXRhZmlsZSBjb3B5IFJFQ0lEPTQgIFNUQU1QPTg2NTk3NzgyMiBmaWxlIG5hbWU9L29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvdXNlcnMwMS5kYmYKICAgZGF0YWZpbGUgMTEgc3dpdGNoZWQgdG8gIGRhdGFmaWxlIGNvcHkKICAgaW5wdXQgZGF0YWZpbGUgY29weSBSRUNJRD01ICBTVEFNUD04NjU5Nzc4MjIgZmlsZSBuYW1lPS9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL1BEQjEvc3lzYXV4MDEuZGJmCiAgIGRhdGFmaWxlIDEyIHN3aXRjaGVkIHRvICBkYXRhZmlsZSBjb3B5CiAgIGlucHV0IGRhdGFmaWxlIGNvcHkgUkVDSUQ9NiAgU1RBTVA9ODY1OTc3ODIyIGZpbGUgIG5hbWU9L29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvUERCMS9QREIxX3VzZXJzMDEuZGJmCmNvbnRlbnRzIG9mIE1lbW9yeSBTY3JpcHQ6CiAgIHsKICAgQWx0ZXIgY2xvbmUgZGF0YWJhc2Ugb3BlbiByZXNldGxvZ3M7CiAgIH0KICAgZXhlY3V0aW5nIE1lbW9yeSBTY3JpcHQKZGF0YWJhc2Ugb3BlbmVkCmNvbnRlbnRzIG9mIE1lbW9yeSBTY3JpcHQ6CiAgIHsKICAgc3FsIGNsb25lICJhbHRlciBwbHVnZ2FibGUgZGF0YWJhc2UgYWxsICBvcGVuIjsKICAgfQogICBleGVjdXRpbmcgTWVtb3J5IFNjcmlwdApzcWwgc3RhdGVtZW50OiBhbHRlciAgcGx1Z2dhYmxlIGRhdGFiYXNlIGFsbCBvcGVuCiAgIEZpbmlzaGVkIER1cGxpY2F0ZSBEYiBhdCAgMTAtREVDLTE0ClJNQU4+” hover_enabled=”0″]W0NEQjEub3JhY2xlQHByaW1hcnkgfl0kICBybWFuIHRhcmdldCBzeXMvb3JhY2xlQERCX1NPVVJDRSBhdXhpbGlhcnkgICBzeXMvb3JhY2xlQERCX0FVWElMSUFSWQpSZWNvdmVyeSBNYW5hZ2VyOiBSZWxlYXNlICAxMi4xLjAuMi4wIC0gUHJvZHVjdGlvbiBvbiBXZWQgRGVjIDEwIDIxOjE3OjMwIDIwMTQKQ29weXJpZ2h0IChjKSAxOTgyLCAyMDE0LCAgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gIEFsbCByaWdodHMgIHJlc2VydmVkLgpjb25uZWN0ZWQgdG8gdGFyZ2V0ICBkYXRhYmFzZTogQ0RCMSAoREJJRD04MzExOTI3NTApCiAgIGNvbm5lY3RlZCB0byBhdXhpbGlhcnkgIGRhdGFiYXNlOiBDREIxIChub3QgbW91bnRlZCkKUk1BTj4gZHVwbGljYXRlIHRhcmdldCAgZGF0YWJhc2UgdG8gQ0RCMSBmcm9tIGFjdGl2ZSBkYXRhYmFzZSB1c2luZyBDT01QUkVTU0VEIEJBQ0tVUFNFVCA7ClN0YXJ0aW5nIER1cGxpY2F0ZSBEYiBhdCAgMTAtREVDLTE0CiAgIHVzaW5nIHRhcmdldCBkYXRhYmFzZSAgY29udHJvbCBmaWxlIGluc3RlYWQgb2YgcmVjb3ZlcnkgY2F0YWxvZwogICBhbGxvY2F0ZWQgY2hhbm5lbDogIE9SQV9BVVhfRElTS18xCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICBTSUQ9MjMgZGV2aWNlIHR5cGU9RElTSwogICBjdXJyZW50IGxvZyBhcmNoaXZlZApjb250ZW50cyBvZiBNZW1vcnkgU2NyaXB0OgogICB7CiAgIHNxbCBjbG9uZSAiYWx0ZXIgc3lzdGVtIHNldCAgZGJfbmFtZSA9CiAgICcnQ0RCMScnIGNvbW1lbnQ9CiAgICcnTW9kaWZpZWQgYnkgUk1BTiBkdXBsaWNhdGUnJyAgc2NvcGU9c3BmaWxlIjsKICAgc3FsIGNsb25lICJhbHRlciBzeXN0ZW0gc2V0ICBkYl91bmlxdWVfbmFtZSA9CiAgICcnQ0RCMScnIGNvbW1lbnQ9CiAgICcnTW9kaWZpZWQgYnkgUk1BTiBkdXBsaWNhdGUnJyAgc2NvcGU9c3BmaWxlIjsKICAgc2h1dGRvd24gY2xvbmUgaW1tZWRpYXRlOwogICBzdGFydHVwIGNsb25lIGZvcmNlIG5vbW91bnQKICAgcmVzdG9yZSBjbG9uZSBmcm9tIHNlcnZpY2UgICdEQl9TT1VSQ0UnIHVzaW5nIGNvbXByZXNzZWQgYmFja3Vwc2V0CiAgIHByaW1hcnkgY29udHJvbGZpbGU7CiAgIGFsdGVyIGNsb25lIGRhdGFiYXNlIG1vdW50OwogICB9CiAgIGV4ZWN1dGluZyBNZW1vcnkgU2NyaXB0CnNxbCBzdGF0ZW1lbnQ6IGFsdGVyIHN5c3RlbSAgc2V0ICBkYl9uYW1lID0gICcnQ0RCMScnIGNvbW1lbnQ9ICcnTW9kaWZpZWQgYnkgUk1BTiAgZHVwbGljYXRlJycgc2NvcGU9c3BmaWxlCnNxbCBzdGF0ZW1lbnQ6IGFsdGVyIHN5c3RlbSAgc2V0ICBkYl91bmlxdWVfbmFtZSA9ICAnJ0NEQjEnJyBjb21tZW50PSAnJ01vZGlmaWVkIGJ5IFJNQU4gIGR1cGxpY2F0ZScnIHNjb3BlPXNwZmlsZQpPcmFjbGUgaW5zdGFuY2Ugc2h1dCBkb3duCk9yYWNsZSBpbnN0YW5jZSBzdGFydGVkClRvdGFsIFN5c3RlbSBHbG9iYWwgIEFyZWEgICAgIDU5OTc4NTQ3MiBieXRlcwpGaXhlZCBTaXplICAgICAgICAgICAgICAgICAgICAgMjkyNzE5MiBieXRlcwogICBWYXJpYWJsZSBTaXplICAgICAgICAgICAgICAgIDI4MTAxOTgxNiBieXRlcwogICBEYXRhYmFzZSBCdWZmZXJzICAgICAgICAgICAgIDMxMDM3ODQ5NiBieXRlcwogICBSZWRvIEJ1ZmZlcnMgICAgICAgICAgICAgICAgICAgNTQ1OTk2OCBieXRlcwpTdGFydGluZyByZXN0b3JlIGF0ICAxMC1ERUMtMTQKICAgYWxsb2NhdGVkIGNoYW5uZWw6ICBPUkFfQVVYX0RJU0tfMQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgU0lEPTIyIGRldmljZSB0eXBlPURJU0sKY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHN0YXJ0aW5nIGRhdGFmaWxlIGJhY2t1cCBzZXQgcmVzdG9yZQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgdXNpbmcgY29tcHJlc3NlZCBuZXR3b3JrIGJhY2t1cCBzZXQgZnJvbSBzZXJ2aWNlIERCX1NPVVJDRQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgcmVzdG9yaW5nIGNvbnRyb2wgZmlsZQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgcmVzdG9yZSBjb21wbGV0ZSwgZWxhcHNlZCB0aW1lOiAwMDowMDowMwogICBvdXRwdXQgZmlsZSAgbmFtZT0vb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9jb250cm9sMDEuY3RsCiAgIEZpbmlzaGVkIHJlc3RvcmUgYXQgIDEwLURFQy0xNApkYXRhYmFzZSBtb3VudGVkCmNvbnRlbnRzIG9mIE1lbW9yeSBTY3JpcHQ6CiAgIHsKICAgc2V0IG5ld25hbWUgZm9yIGRhdGFmaWxlICAxIHRvCiAgICIvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9zeXN0ZW0wMS5kYmYiOwogICBzZXQgbmV3bmFtZSBmb3IgZGF0YWZpbGUgIDIgdG8KICAgIi9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3BkYnNlZWQvc3lzdGVtMDEuZGJmIjsKICAgc2V0IG5ld25hbWUgZm9yIGRhdGFmaWxlICAzIHRvCiAgICIvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9zeXNhdXgwMS5kYmYiOwogICBzZXQgbmV3bmFtZSBmb3IgZGF0YWZpbGUgIDQgdG8KICAgIi9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3BkYnNlZWQvc3lzYXV4MDEuZGJmIjsKICAgc2V0IG5ld25hbWUgZm9yIGRhdGFmaWxlICA1IHRvCiAgICIvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS91bmRvdGJzMDEuZGJmIjsKICAgc2V0IG5ld25hbWUgZm9yIGRhdGFmaWxlICA2IHRvCiAgICIvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS91c2VyczAxLmRiZiI7CiAgIHNldCBuZXduYW1lIGZvciBkYXRhZmlsZSAgMTAgdG8KICAgIi9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL1BEQjEvc3lzdGVtMDEuZGJmIjsKICAgc2V0IG5ld25hbWUgZm9yIGRhdGFmaWxlICAxMSB0bwogICAiL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvUERCMS9zeXNhdXgwMS5kYmYiOwogICBzZXQgbmV3bmFtZSBmb3IgZGF0YWZpbGUgIDEyIHRvCiAgICIvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9QREIxL1BEQjFfdXNlcnMwMS5kYmYiOwogICByZXN0b3JlCiAgIGZyb20gc2VydmljZSAgICdEQl9TT1VSQ0UnICAgdXNpbmcgY29tcHJlc3NlZCAgYmFja3Vwc2V0CiAgIGNsb25lIGRhdGFiYXNlCiAgIDsKICAgc3FsICdhbHRlciBzeXN0ZW0gYXJjaGl2ZSBsb2cgY3VycmVudCc7CiAgIH0KICAgZXhlY3V0aW5nIE1lbW9yeSBTY3JpcHQKZXhlY3V0aW5nIGNvbW1hbmQ6IFNFVCAgTkVXTkFNRQpleGVjdXRpbmcgY29tbWFuZDogU0VUICBORVdOQU1FCmV4ZWN1dGluZyBjb21tYW5kOiBTRVQgIE5FV05BTUUKZXhlY3V0aW5nIGNvbW1hbmQ6IFNFVCAgTkVXTkFNRQpleGVjdXRpbmcgY29tbWFuZDogU0VUICBORVdOQU1FCmV4ZWN1dGluZyBjb21tYW5kOiBTRVQgIE5FV05BTUUKZXhlY3V0aW5nIGNvbW1hbmQ6IFNFVCAgTkVXTkFNRQpleGVjdXRpbmcgY29tbWFuZDogU0VUICBORVdOQU1FCmV4ZWN1dGluZyBjb21tYW5kOiBTRVQgIE5FV05BTUUKU3RhcnRpbmcgcmVzdG9yZSBhdCAgMTAtREVDLTE0CiAgIHVzaW5nIGNoYW5uZWwgIE9SQV9BVVhfRElTS18xCmNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICBzdGFydGluZyBkYXRhZmlsZSBiYWNrdXAgc2V0IHJlc3RvcmUKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHVzaW5nIGNvbXByZXNzZWQgbmV0d29yayBiYWNrdXAgc2V0IGZyb20gc2VydmljZSBEQl9TT1VSQ0UKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHNwZWNpZnlpbmcgZGF0YWZpbGUocykgdG8gcmVzdG9yZSBmcm9tIGJhY2t1cCBzZXQKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHJlc3RvcmluZyBkYXRhZmlsZSAwMDAwMSB0byAvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9zeXN0ZW0wMS5kYmYKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHJlc3RvcmUgY29tcGxldGUsIGVsYXBzZWQgdGltZTogMDA6MDE6MDUKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHN0YXJ0aW5nIGRhdGFmaWxlIGJhY2t1cCBzZXQgcmVzdG9yZQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgdXNpbmcgY29tcHJlc3NlZCBuZXR3b3JrIGJhY2t1cCBzZXQgZnJvbSBzZXJ2aWNlIERCX1NPVVJDRQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgc3BlY2lmeWluZyBkYXRhZmlsZShzKSB0byByZXN0b3JlIGZyb20gYmFja3VwIHNldAogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgcmVzdG9yaW5nIGRhdGFmaWxlIDAwMDAyIHRvICAvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9wZGJzZWVkL3N5c3RlbTAxLmRiZgogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgcmVzdG9yZSBjb21wbGV0ZSwgZWxhcHNlZCB0aW1lOiAwMDowMDoyNQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgc3RhcnRpbmcgZGF0YWZpbGUgYmFja3VwIHNldCByZXN0b3JlCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICB1c2luZyBjb21wcmVzc2VkIG5ldHdvcmsgYmFja3VwIHNldCBmcm9tIHNlcnZpY2UgREJfU09VUkNFCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICBzcGVjaWZ5aW5nIGRhdGFmaWxlKHMpIHRvIHJlc3RvcmUgZnJvbSBiYWNrdXAgc2V0CiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICByZXN0b3JpbmcgZGF0YWZpbGUgMDAwMDMgdG8gL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvc3lzYXV4MDEuZGJmCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICByZXN0b3JlIGNvbXBsZXRlLCBlbGFwc2VkIHRpbWU6IDAwOjAwOjU1CiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICBzdGFydGluZyBkYXRhZmlsZSBiYWNrdXAgc2V0IHJlc3RvcmUKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHVzaW5nIGNvbXByZXNzZWQgbmV0d29yayBiYWNrdXAgc2V0IGZyb20gc2VydmljZSBEQl9TT1VSQ0UKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHNwZWNpZnlpbmcgZGF0YWZpbGUocykgdG8gcmVzdG9yZSBmcm9tIGJhY2t1cCBzZXQKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHJlc3RvcmluZyBkYXRhZmlsZSAwMDAwNCB0byAgL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvcGRic2VlZC9zeXNhdXgwMS5kYmYKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHJlc3RvcmUgY29tcGxldGUsIGVsYXBzZWQgdGltZTogMDA6MDA6NDUKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHN0YXJ0aW5nIGRhdGFmaWxlIGJhY2t1cCBzZXQgcmVzdG9yZQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgdXNpbmcgY29tcHJlc3NlZCBuZXR3b3JrIGJhY2t1cCBzZXQgZnJvbSBzZXJ2aWNlIERCX1NPVVJDRQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgc3BlY2lmeWluZyBkYXRhZmlsZShzKSB0byByZXN0b3JlIGZyb20gYmFja3VwIHNldAogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgcmVzdG9yaW5nIGRhdGFmaWxlIDAwMDA1IHRvIC9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3VuZG90YnMwMS5kYmYKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHJlc3RvcmUgY29tcGxldGUsIGVsYXBzZWQgdGltZTogMDA6MDA6MjUKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHN0YXJ0aW5nIGRhdGFmaWxlIGJhY2t1cCBzZXQgcmVzdG9yZQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgdXNpbmcgY29tcHJlc3NlZCBuZXR3b3JrIGJhY2t1cCBzZXQgZnJvbSBzZXJ2aWNlIERCX1NPVVJDRQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgc3BlY2lmeWluZyBkYXRhZmlsZShzKSB0byByZXN0b3JlIGZyb20gYmFja3VwIHNldAogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgcmVzdG9yaW5nIGRhdGFmaWxlIDAwMDA2IHRvIC9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3VzZXJzMDEuZGJmCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICByZXN0b3JlIGNvbXBsZXRlLCBlbGFwc2VkIHRpbWU6IDAwOjAwOjAyCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICBzdGFydGluZyBkYXRhZmlsZSBiYWNrdXAgc2V0IHJlc3RvcmUKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHVzaW5nIGNvbXByZXNzZWQgbmV0d29yayBiYWNrdXAgc2V0IGZyb20gc2VydmljZSBEQl9TT1VSQ0UKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHNwZWNpZnlpbmcgZGF0YWZpbGUocykgdG8gcmVzdG9yZSBmcm9tIGJhY2t1cCBzZXQKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHJlc3RvcmluZyBkYXRhZmlsZSAwMDAxMCB0byAvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9QREIxL3N5c3RlbTAxLmRiZgogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgcmVzdG9yZSBjb21wbGV0ZSwgZWxhcHNlZCB0aW1lOiAwMDowMDoyNQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgc3RhcnRpbmcgZGF0YWZpbGUgYmFja3VwIHNldCByZXN0b3JlCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICB1c2luZyBjb21wcmVzc2VkIG5ldHdvcmsgYmFja3VwIHNldCBmcm9tIHNlcnZpY2UgREJfU09VUkNFCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICBzcGVjaWZ5aW5nIGRhdGFmaWxlKHMpIHRvIHJlc3RvcmUgZnJvbSBiYWNrdXAgc2V0CiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICByZXN0b3JpbmcgZGF0YWZpbGUgMDAwMTEgdG8gL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvUERCMS9zeXNhdXgwMS5kYmYKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHJlc3RvcmUgY29tcGxldGUsIGVsYXBzZWQgdGltZTogMDA6MDA6NDUKICAgY2hhbm5lbCBPUkFfQVVYX0RJU0tfMTogIHN0YXJ0aW5nIGRhdGFmaWxlIGJhY2t1cCBzZXQgcmVzdG9yZQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgdXNpbmcgY29tcHJlc3NlZCBuZXR3b3JrIGJhY2t1cCBzZXQgZnJvbSBzZXJ2aWNlIERCX1NPVVJDRQogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgc3BlY2lmeWluZyBkYXRhZmlsZShzKSB0byByZXN0b3JlIGZyb20gYmFja3VwIHNldAogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgcmVzdG9yaW5nIGRhdGFmaWxlIDAwMDEyIHRvIC9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL1BEQjEvUERCMV91c2VyczAxLmRiZgogICBjaGFubmVsIE9SQV9BVVhfRElTS18xOiAgcmVzdG9yZSBjb21wbGV0ZSwgZWxhcHNlZCB0aW1lOiAwMDowMDowMQogICBGaW5pc2hlZCByZXN0b3JlIGF0ICAxMC1ERUMtMTQKc3FsIHN0YXRlbWVudDogYWx0ZXIgc3lzdGVtICBhcmNoaXZlIGxvZyBjdXJyZW50CiAgIGN1cnJlbnQgbG9nIGFyY2hpdmVkCmNvbnRlbnRzIG9mIE1lbW9yeSBTY3JpcHQ6CiAgIHsKICAgcmVzdG9yZSBjbG9uZSBmb3JjZSBmcm9tIHNlcnZpY2UgICdEQl9TT1VSQ0UnIHVzaW5nIGNvbXByZXNzZWQgYmFja3Vwc2V0CiAgIGFyY2hpdmVsb2cgZnJvbSBzY24gIDI1Nzk2Mjc7CiAgIHN3aXRjaCBjbG9uZSBkYXRhZmlsZSBhbGw7CiAgIH0KICAgZXhlY3V0aW5nIE1lbW9yeSBTY3JpcHQKU3RhcnRpbmcgcmVzdG9yZSBhdCAgMTAtREVDLTE0CiAgIHVzaW5nIGNoYW5uZWwgIE9SQV9BVVhfRElTS18xCmNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICBzdGFydGluZyBhcmNoaXZlZCBsb2cgcmVzdG9yZSB0byBkZWZhdWx0IGRlc3RpbmF0aW9uCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICB1c2luZyBjb21wcmVzc2VkIG5ldHdvcmsgYmFja3VwIHNldCBmcm9tIHNlcnZpY2UgREJfU09VUkNFCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICByZXN0b3JpbmcgYXJjaGl2ZWQgbG9nCiAgIGFyY2hpdmVkIGxvZyB0aHJlYWQ9MSAgc2VxdWVuY2U9MjExCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICByZXN0b3JlIGNvbXBsZXRlLCBlbGFwc2VkIHRpbWU6IDAwOjAwOjAxCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICBzdGFydGluZyBhcmNoaXZlZCBsb2cgcmVzdG9yZSB0byBkZWZhdWx0IGRlc3RpbmF0aW9uCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICB1c2luZyBjb21wcmVzc2VkIG5ldHdvcmsgYmFja3VwIHNldCBmcm9tIHNlcnZpY2UgREJfU09VUkNFCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICByZXN0b3JpbmcgYXJjaGl2ZWQgbG9nCiAgIGFyY2hpdmVkIGxvZyB0aHJlYWQ9MSAgc2VxdWVuY2U9MjEyCiAgIGNoYW5uZWwgT1JBX0FVWF9ESVNLXzE6ICByZXN0b3JlIGNvbXBsZXRlLCBlbGFwc2VkIHRpbWU6IDAwOjAwOjAxCiAgIEZpbmlzaGVkIHJlc3RvcmUgYXQgIDEwLURFQy0xNApkYXRhZmlsZSAxIHN3aXRjaGVkIHRvICBkYXRhZmlsZSBjb3B5CiAgIGlucHV0IGRhdGFmaWxlIGNvcHkgIFJFQ0lEPTEwIFNUQU1QPTg2NTk3Nzc5OSBmaWxlICBuYW1lPS9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3N5c3RlbTAxLmRiZgogICBkYXRhZmlsZSAyIHN3aXRjaGVkIHRvICBkYXRhZmlsZSBjb3B5CiAgIGlucHV0IGRhdGFmaWxlIGNvcHkgIFJFQ0lEPTExIFNUQU1QPTg2NTk3Nzc5OSBmaWxlICBuYW1lPS9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3BkYnNlZWQvc3lzdGVtMDEuZGJmCiAgIGRhdGFmaWxlIDMgc3dpdGNoZWQgdG8gIGRhdGFmaWxlIGNvcHkKICAgaW5wdXQgZGF0YWZpbGUgY29weSAgUkVDSUQ9MTIgU1RBTVA9ODY1OTc3Nzk5IGZpbGUgbmFtZT0vb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9zeXNhdXgwMS5kYmYKICAgZGF0YWZpbGUgNCBzd2l0Y2hlZCB0byAgZGF0YWZpbGUgY29weQogICBpbnB1dCBkYXRhZmlsZSBjb3B5ICBSRUNJRD0xMyBTVEFNUD04NjU5Nzc3OTkgZmlsZSAgbmFtZT0vb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9wZGJzZWVkL3N5c2F1eDAxLmRiZgogICBkYXRhZmlsZSA1IHN3aXRjaGVkIHRvICBkYXRhZmlsZSBjb3B5CiAgIGlucHV0IGRhdGFmaWxlIGNvcHkgIFJFQ0lEPTE0IFNUQU1QPTg2NTk3Nzc5OSBmaWxlIG5hbWU9L29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvdW5kb3RiczAxLmRiZgogICBkYXRhZmlsZSA2IHN3aXRjaGVkIHRvICBkYXRhZmlsZSBjb3B5CiAgIGlucHV0IGRhdGFmaWxlIGNvcHkgIFJFQ0lEPTE1IFNUQU1QPTg2NTk3Nzc5OSBmaWxlIG5hbWU9L29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvdXNlcnMwMS5kYmYKICAgZGF0YWZpbGUgMTAgc3dpdGNoZWQgdG8gIGRhdGFmaWxlIGNvcHkKICAgaW5wdXQgZGF0YWZpbGUgY29weSAgUkVDSUQ9MTYgU1RBTVA9ODY1OTc3Nzk5IGZpbGUgIG5hbWU9L29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvUERCMS9zeXN0ZW0wMS5kYmYKICAgZGF0YWZpbGUgMTEgc3dpdGNoZWQgdG8gIGRhdGFmaWxlIGNvcHkKICAgaW5wdXQgZGF0YWZpbGUgY29weSAgUkVDSUQ9MTcgU1RBTVA9ODY1OTc3Nzk5IGZpbGUgIG5hbWU9L29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvUERCMS9zeXNhdXgwMS5kYmYKICAgZGF0YWZpbGUgMTIgc3dpdGNoZWQgdG8gIGRhdGFmaWxlIGNvcHkKICAgaW5wdXQgZGF0YWZpbGUgY29weSAgUkVDSUQ9MTggU1RBTVA9ODY1OTc3Nzk5IGZpbGUgIG5hbWU9L29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvUERCMS9QREIxX3VzZXJzMDEuZGJmCmNvbnRlbnRzIG9mIE1lbW9yeSBTY3JpcHQ6CiAgIHsKICAgc2V0IHVudGlsIHNjbiAgMjU3OTg5MTsKICAgcmVjb3ZlcgogICBjbG9uZSBkYXRhYmFzZQogICBkZWxldGUgYXJjaGl2ZWxvZwogICA7CiAgIH0KICAgZXhlY3V0aW5nIE1lbW9yeSBTY3JpcHQKZXhlY3V0aW5nIGNvbW1hbmQ6IFNFVCAgdW50aWwgY2xhdXNlClN0YXJ0aW5nIHJlY292ZXIgYXQgIDEwLURFQy0xNAogICB1c2luZyBjaGFubmVsICBPUkFfQVVYX0RJU0tfMQpzdGFydGluZyBtZWRpYSByZWNvdmVyeQphcmNoaXZlZCBsb2cgZm9yIHRocmVhZCAxICB3aXRoIHNlcXVlbmNlIDIxMSBpcyBhbHJlYWR5IG9uIGRpc2sgYXMgZmlsZSAgCi9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL0ZSQS8xXzIxMV84NTc0NzUzMTAuZGJmCiAgIGFyY2hpdmVkIGxvZyBmb3IgdGhyZWFkIDEgIHdpdGggc2VxdWVuY2UgMjEyIGlzIGFscmVhZHkgb24gZGlzayBhcyBmaWxlICAKL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvRlJBLzFfMjEyXzg1NzQ3NTMxMC5kYmYKICAgYXJjaGl2ZWQgbG9nIGZpbGUgIG5hbWU9L29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvRlJBLzFfMjExXzg1NzQ3NTMxMC5kYmYgdGhyZWFkPTEgIHNlcXVlbmNlPTIxMQogICBhcmNoaXZlZCBsb2cgZmlsZSAgbmFtZT0vb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9GUkEvMV8yMTJfODU3NDc1MzEwLmRiZiB0aHJlYWQ9MSAgc2VxdWVuY2U9MjEyCiAgIG1lZGlhIHJlY292ZXJ5IGNvbXBsZXRlLCAgZWxhcHNlZCB0aW1lOiAwMDowMDowMAogICBGaW5pc2hlZCByZWNvdmVyIGF0ICAxMC1ERUMtMTQKICAgT3JhY2xlIGluc3RhbmNlIHN0YXJ0ZWQKVG90YWwgU3lzdGVtIEdsb2JhbCAgQXJlYSAgICAgNTk5Nzg1NDcyIGJ5dGVzCkZpeGVkIFNpemUgICAgICAgICAgICAgICAgICAgICAyOTI3MTkyIGJ5dGVzCiAgIFZhcmlhYmxlIFNpemUgICAgICAgICAgICAgICAgMjgxMDE5ODE2IGJ5dGVzCiAgIERhdGFiYXNlIEJ1ZmZlcnMgICAgICAgICAgICAgMzEwMzc4NDk2IGJ5dGVzCiAgIFJlZG8gQnVmZmVycyAgICAgICAgICAgICAgICAgICA1NDU5OTY4IGJ5dGVzCmNvbnRlbnRzIG9mIE1lbW9yeSBTY3JpcHQ6CiAgIHsKICAgc3FsIGNsb25lICJhbHRlciBzeXN0ZW0gc2V0ICBkYl9uYW1lID0KICAgJydDREIxJycgY29tbWVudD0KICAgJydSZXNldCB0byBvcmlnaW5hbCB2YWx1ZSBieSBSTUFOJycgIHNjb3BlPXNwZmlsZSI7CiAgIHNxbCBjbG9uZSAiYWx0ZXIgc3lzdGVtIHJlc2V0ICBkYl91bmlxdWVfbmFtZSBzY29wZT1zcGZpbGUiOwogICB9CiAgIGV4ZWN1dGluZyBNZW1vcnkgU2NyaXB0CnNxbCBzdGF0ZW1lbnQ6IGFsdGVyIHN5c3RlbSAgc2V0ICBkYl9uYW1lID0gICcnQ0RCMScnIGNvbW1lbnQ9ICcnUmVzZXQgdG8gb3JpZ2luYWwgdmFsdWUgIGJ5IFJNQU4nJyBzY29wZT1zcGZpbGUKc3FsIHN0YXRlbWVudDogYWx0ZXIgc3lzdGVtICByZXNldCAgZGJfdW5pcXVlX25hbWUgc2NvcGU9c3BmaWxlCiAgIE9yYWNsZSBpbnN0YW5jZSBzdGFydGVkClRvdGFsIFN5c3RlbSBHbG9iYWwgIEFyZWEgICAgIDU5OTc4NTQ3MiBieXRlcwpGaXhlZCBTaXplICAgICAgICAgICAgICAgICAgICAgMjkyNzE5MiBieXRlcwogICBWYXJpYWJsZSBTaXplICAgICAgICAgICAgICAgIDI4MTAxOTgxNiBieXRlcwogICBEYXRhYmFzZSBCdWZmZXJzICAgICAgICAgICAgIDMxMDM3ODQ5NiBieXRlcwogICBSZWRvIEJ1ZmZlcnMgICAgICAgICAgICAgICAgICAgNTQ1OTk2OCBieXRlcwogICBzcWwgc3RhdGVtZW50OiBDUkVBVEUgIENPTlRST0xGSUxFIFJFVVNFIFNFVCBEQVRBQkFTRSAiQ0RCMSIgUkVTRVRMT0dTIEFSQ0hJVkVMT0cKICAgTUFYTE9HRklMRVMgICAgIDE2CiAgIE1BWExPR01FTUJFUlMgICAgICAzCiAgIE1BWERBVEFGSUxFUyAgICAgMTAyNAogICBNQVhJTlNUQU5DRVMgICAgIDgKICAgTUFYTE9HSElTVE9SWSAgICAgIDI5MgogICBMT0dGSUxFCiAgIEdST1VQICAgIDEgKCAnL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvcmVkbzAxLmxvZycgKSBTSVpFIDUwIE0gIFJFVVNFLAogICBHUk9VUCAgICAyICggJy9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3JlZG8wMi5sb2cnICkgU0laRSA1MCBNICBSRVVTRSwKICAgR1JPVVAgICAgMyAoICcvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9yZWRvMDMubG9nJyApIFNJWkUgNTAgTSAgUkVVU0UKICAgREFUQUZJTEUKICAgJy9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3N5c3RlbTAxLmRiZicsCiAgICcvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9wZGJzZWVkL3N5c3RlbTAxLmRiZicsCiAgICcvb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS9QREIxL3N5c3RlbTAxLmRiZicKICAgQ0hBUkFDVEVSIFNFVCBXRThNU1dJTjEyNTIKY29udGVudHMgb2YgTWVtb3J5IFNjcmlwdDoKICAgewogICBzZXQgbmV3bmFtZSBmb3IgdGVtcGZpbGUgIDEgdG8KICAgIi9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3RlbXAwMS5kYmYiOwogICBzZXQgbmV3bmFtZSBmb3IgdGVtcGZpbGUgIDIgdG8KICAgIi9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3BkYnNlZWQvdGVtcDAxLmRiZiI7CiAgIHNldCBuZXduYW1lIGZvciB0ZW1wZmlsZSAgMyB0bwogICAiL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvUERCMS90ZW1wMDEuZGJmIjsKICAgc3dpdGNoIGNsb25lIHRlbXBmaWxlIGFsbDsKICAgY2F0YWxvZyBjbG9uZSBkYXRhZmlsZWNvcHkgICAiL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvc3lzYXV4MDEuZGJmIiwKICAgIi9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3BkYnNlZWQvc3lzYXV4MDEuZGJmIiwKICAgIi9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3VuZG90YnMwMS5kYmYiLAogICAiL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvdXNlcnMwMS5kYmYiLAogICAiL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvUERCMS9zeXNhdXgwMS5kYmYiLAogICAiL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvUERCMS9QREIxX3VzZXJzMDEuZGJmIjsKICAgc3dpdGNoIGNsb25lIGRhdGFmaWxlIGFsbDsKICAgfQogICBleGVjdXRpbmcgTWVtb3J5IFNjcmlwdApleGVjdXRpbmcgY29tbWFuZDogU0VUICBORVdOQU1FCmV4ZWN1dGluZyBjb21tYW5kOiBTRVQgIE5FV05BTUUKZXhlY3V0aW5nIGNvbW1hbmQ6IFNFVCAgTkVXTkFNRQpyZW5hbWVkIHRlbXBmaWxlIDEgdG8gIC9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3RlbXAwMS5kYmYgaW4gY29udHJvbCBmaWxlCiAgIHJlbmFtZWQgdGVtcGZpbGUgMiB0byAgL29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvcGRic2VlZC90ZW1wMDEuZGJmIGluIGNvbnRyb2wgZmlsZQogICByZW5hbWVkIHRlbXBmaWxlIDMgdG8gIC9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL1BEQjEvdGVtcDAxLmRiZiBpbiBjb250cm9sIGZpbGUKY2F0YWxvZ2VkIGRhdGFmaWxlIGNvcHkKICAgZGF0YWZpbGUgY29weSBmaWxlICBuYW1lPS9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3N5c2F1eDAxLmRiZiBSRUNJRD0xIFNUQU1QPTg2NTk3NzgyMgogICBjYXRhbG9nZWQgZGF0YWZpbGUgY29weQogICBkYXRhZmlsZSBjb3B5IGZpbGUgIG5hbWU9L29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvcGRic2VlZC9zeXNhdXgwMS5kYmYgUkVDSUQ9MiAgU1RBTVA9ODY1OTc3ODIyCiAgIGNhdGFsb2dlZCBkYXRhZmlsZSBjb3B5CiAgIGRhdGFmaWxlIGNvcHkgZmlsZSAgbmFtZT0vb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS91bmRvdGJzMDEuZGJmIFJFQ0lEPTMgU1RBTVA9ODY1OTc3ODIyCiAgIGNhdGFsb2dlZCBkYXRhZmlsZSBjb3B5CiAgIGRhdGFmaWxlIGNvcHkgZmlsZSAgbmFtZT0vb3JhY2xlL2FwcC9wcm9kdWN0L29yYWRhdGEvU1RCWS91c2VyczAxLmRiZiBSRUNJRD00IFNUQU1QPTg2NTk3NzgyMgogICBjYXRhbG9nZWQgZGF0YWZpbGUgY29weQogICBkYXRhZmlsZSBjb3B5IGZpbGUgIG5hbWU9L29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvUERCMS9zeXNhdXgwMS5kYmYgUkVDSUQ9NSBTVEFNUD04NjU5Nzc4MjIKICAgY2F0YWxvZ2VkIGRhdGFmaWxlIGNvcHkKICAgZGF0YWZpbGUgY29weSBmaWxlICBuYW1lPS9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL1BEQjEvUERCMV91c2VyczAxLmRiZiBSRUNJRD02ICBTVEFNUD04NjU5Nzc4MjIKZGF0YWZpbGUgMyBzd2l0Y2hlZCB0byAgZGF0YWZpbGUgY29weQogICBpbnB1dCBkYXRhZmlsZSBjb3B5IFJFQ0lEPTEgIFNUQU1QPTg2NTk3NzgyMiBmaWxlIG5hbWU9L29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvc3lzYXV4MDEuZGJmCiAgIGRhdGFmaWxlIDQgc3dpdGNoZWQgdG8gIGRhdGFmaWxlIGNvcHkKICAgaW5wdXQgZGF0YWZpbGUgY29weSBSRUNJRD0yICBTVEFNUD04NjU5Nzc4MjIgZmlsZSBuYW1lPS9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3BkYnNlZWQvc3lzYXV4MDEuZGJmCiAgIGRhdGFmaWxlIDUgc3dpdGNoZWQgdG8gIGRhdGFmaWxlIGNvcHkKICAgaW5wdXQgZGF0YWZpbGUgY29weSBSRUNJRD0zICBTVEFNUD04NjU5Nzc4MjIgZmlsZSBuYW1lPS9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL3VuZG90YnMwMS5kYmYKICAgZGF0YWZpbGUgNiBzd2l0Y2hlZCB0byAgZGF0YWZpbGUgY29weQogICBpbnB1dCBkYXRhZmlsZSBjb3B5IFJFQ0lEPTQgIFNUQU1QPTg2NTk3NzgyMiBmaWxlIG5hbWU9L29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvdXNlcnMwMS5kYmYKICAgZGF0YWZpbGUgMTEgc3dpdGNoZWQgdG8gIGRhdGFmaWxlIGNvcHkKICAgaW5wdXQgZGF0YWZpbGUgY29weSBSRUNJRD01ICBTVEFNUD04NjU5Nzc4MjIgZmlsZSBuYW1lPS9vcmFjbGUvYXBwL3Byb2R1Y3Qvb3JhZGF0YS9TVEJZL1BEQjEvc3lzYXV4MDEuZGJmCiAgIGRhdGFmaWxlIDEyIHN3aXRjaGVkIHRvICBkYXRhZmlsZSBjb3B5CiAgIGlucHV0IGRhdGFmaWxlIGNvcHkgUkVDSUQ9NiAgU1RBTVA9ODY1OTc3ODIyIGZpbGUgIG5hbWU9L29yYWNsZS9hcHAvcHJvZHVjdC9vcmFkYXRhL1NUQlkvUERCMS9QREIxX3VzZXJzMDEuZGJmCmNvbnRlbnRzIG9mIE1lbW9yeSBTY3JpcHQ6CiAgIHsKICAgQWx0ZXIgY2xvbmUgZGF0YWJhc2Ugb3BlbiByZXNldGxvZ3M7CiAgIH0KICAgZXhlY3V0aW5nIE1lbW9yeSBTY3JpcHQKZGF0YWJhc2Ugb3BlbmVkCmNvbnRlbnRzIG9mIE1lbW9yeSBTY3JpcHQ6CiAgIHsKICAgc3FsIGNsb25lICJhbHRlciBwbHVnZ2FibGUgZGF0YWJhc2UgYWxsICBvcGVuIjsKICAgfQogICBleGVjdXRpbmcgTWVtb3J5IFNjcmlwdApzcWwgc3RhdGVtZW50OiBhbHRlciAgcGx1Z2dhYmxlIGRhdGFiYXNlIGFsbCBvcGVuCiAgIEZpbmlzaGVkIER1cGxpY2F0ZSBEYiBhdCAgMTAtREVDLTE0ClJNQU4+[/et_pb_dmb_code_snippet]

É importante ressaltar que o produto final da operação de active database duplicate, é um database duplicado, ou seja, não é produzido um banco de dados idêntico ao source database, obviamente isso pode gerar uma certa confusão, uma vez que em muitas oportunidade referimos essa operação como clonagem, contudo, perceba que em um certo momento da operação, o controlfile é recriado, provocando assim uma alteração no DBID.

Essa troca é necessária em caso de utilização de um catalogo de recuperação do RMAN, não é possível registrar dois databases com um mesmo DBID. Caso o intuito do duplicate seja criar um standby database, obviamente o DBID não seria alterado, não existindo a recriação do controlfile.