Importação online dos microdados trimestrais para variáveis
selecionadas
Estimando Totais
Variáveis Numéricas
É possível estimar totais populacionais de variáveis
numéricas.
RENDA TOTAL
total SE
VD4020 2.8538e+11 3232099917
Variáveis Categóricas
É possível estimar totais populacionais por
categorias.
TOTAL SEXO
total SE
V2007Homem 105256054 0.0597
V2007Mulher 110152130 0.0501
É possível estimar o total de mais de uma variável, no mesmo
código.
TOTAL SEXO/RAÇA
total SE
V2007Homem 105256054 5.9700e-02
V2007Mulher 110152130 5.0100e-02
V2010Branca 92151590 4.3304e+05
V2010Preta 22282980 2.6777e+05
V2010Amarela 1564002 7.5188e+04
V2010Parda 98472156 3.5676e+05
V2010Indígena 912171 4.3699e+04
V2010Ignorado 25284 6.1276e+03
É possível estimar o cruzamento de duas ou mais variáveis
categóricas.
TOTAL SEXO E RAÇA
A B
interaction(V2007, V2010)Homem.Branca 44458172.650 236389.561
interaction(V2007, V2010)Mulher.Branca 47693417.764 237439.197
interaction(V2007, V2010)Homem.Preta 11128237.656 153710.126
interaction(V2007, V2010)Mulher.Preta 11154742.753 141665.288
interaction(V2007, V2010)Homem.Amarela 702041.013 38041.011
interaction(V2007, V2010)Mulher.Amarela 861960.455 47299.599
interaction(V2007, V2010)Homem.Parda 48538297.344 206795.152
interaction(V2007, V2010)Mulher.Parda 49933858.721 204956.689
interaction(V2007, V2010)Homem.Indígena 418865.673 23340.158
interaction(V2007, V2010)Mulher.Indígena 493305.736 26256.040
interaction(V2007, V2010)Homem.Ignorado 10439.744 3067.550
interaction(V2007, V2010)Mulher.Ignorado 14844.638 4238.869
Estimando Proporções
Estimando a proporção de cada sexo na população.
PROPORÇÃO DOS SEXOS NA POPULAÇÃO
mean SE
V2007Homem 0.48864 0
V2007Mulher 0.51136 0
É possível estimar a proporção com mais de duas variáveis (sexo e cor
ou raça).
PROPORÇÃO DOS SEXOS DE ACORDO COM A RAÇA OU COR
mean SE
V2007Homem 0.48863535 0.0000
V2007Mulher 0.51136465 0.0000
V2010Branca 0.42779986 0.0020
V2010Preta 0.10344538 0.0012
V2010Amarela 0.00726064 0.0003
V2010Parda 0.45714213 0.0017
V2010Indígena 0.00423462 0.0002
V2010Ignorado 0.00011738 0.0000
É possível ainda estimar a proporção de um cruzamento de variáveis,
por exemplo, sexo e cor.
CRUZAMENTO SEXO X COR
mean SE
interaction(V2007, V2010)Homem.Branca 2.0639e-01 0.0011
interaction(V2007, V2010)Mulher.Branca 2.2141e-01 0.0011
interaction(V2007, V2010)Homem.Preta 5.1661e-02 0.0007
interaction(V2007, V2010)Mulher.Preta 5.1784e-02 0.0007
interaction(V2007, V2010)Homem.Amarela 3.2591e-03 0.0002
interaction(V2007, V2010)Mulher.Amarela 4.0015e-03 0.0002
interaction(V2007, V2010)Homem.Parda 2.2533e-01 0.0010
interaction(V2007, V2010)Mulher.Parda 2.3181e-01 0.0010
interaction(V2007, V2010)Homem.Indígena 1.9445e-03 0.0001
interaction(V2007, V2010)Mulher.Indígena 2.2901e-03 0.0001
interaction(V2007, V2010)Homem.Ignorado 4.8465e-05 0.0000
interaction(V2007, V2010)Mulher.Ignorado 6.8914e-05 0.0000
Estimando razões
Além das proporções, também é possível estimar razões entre duas
variáveis. por exemplo, a taxa de desocupação é a razão
entre a variável Pessoas Desocupadas e Pessoas
na Força de Trabalho.
Ratio estimator: svyratio.svyrep.design(numerator = ~(VD4002 == "Pessoas desocupadas"),
denominator = ~(VD4001 == "Pessoas na força de trabalho"),
design = dadosPNADc, na.rm = TRUE)
Ratios=
VD4001 == "Pessoas na força de trabalho"
VD4002 == "Pessoas desocupadas" 0.08039508
SEs=
[,1]
[1,] 0.0009918589
Estimação para variáveis de rendimento deflacionadas
Para estimar totais e médias de variáveis de rendimento
deflacionadas, ou seja, ao invés de obter as estimativas sob o valor
nominal destas variáveis, passar a obter as estimativas sob o valor
real. Primeiramente, é necessário realizar a criação da variável de
rendimento com os valores deflacionados nos microdados.
RENDA TOTAL REAL
total SE
VD4020_real 2.861e+11 3241718234
MÉDIA RENDA REAL TOTAL
mean SE
VD4020_real 2941.4 31.16
Estimação para um Domínio
Muitas vezes queremos fazer uma análise para um domínio específico da
população. Com o pacote survey, esse domínio pode ser selecionado
utilizando a função subset no objeto do plano amostral, aplicando a
condição que define aquele domínio. É necessário que a seleção desse
domínio nos dados seja feita somente após a criação do
objeto que define o plano amostral, caso contrário poderá ser obtido
resultados incorretos. Para a seleção dos domínios podem ser utilizadas
condicionais com igualdade, como abaixo:
MÉDIA RENDA MULHER
mean SE
VD4020 2555.7 30.649
Ou condicionais com desigualdade, como abaixo:
TAXA DE DESOCUPAÇÃO PARA PESSOAS MAIORES DE 25
ANOS
Ratio estimator: svyratio.svyrep.design(numerator = ~(VD4002 == "Pessoas desocupadas"),
denominator = ~(VD4001 == "Pessoas na força de trabalho"),
design = subset(dadosPNADc, V2009 >= 25), na.rm = TRUE)
Ratios=
VD4001 == "Pessoas na força de trabalho"
VD4002 == "Pessoas desocupadas" 0.06120555
SEs=
[,1]
[1,] 0.0009007475
Além disso, é possível utilizar múltiplas condições com os
operados lógicos & (“e”) e | (“ou”), para estimar a
frequência relativa de cada nível de instrução para homens pardos com
mais de 30 anos, por exemplo.
NÍVEL DE INSTRUÇÃO PARA HOMENS DE COR PARDA E MAIORES DE 30
ANOS
mean SE
VD3004Sem instrução e menos de 1 ano de estudo 0.092896 0.0015
VD3004Fundamental incompleto ou equivalente 0.357178 0.0029
VD3004Fundamental completo ou equivalente 0.079902 0.0017
VD3004Médio incompleto ou equivalente 0.051891 0.0013
VD3004Médio completo ou equivalente 0.283245 0.0030
VD3004Superior incompleto ou equivalente 0.027428 0.0011
VD3004Superior completo 0.107461 0.0022
Além disso, caso deseje realizar diversas análises para um mesmo
domínio, é possível criar um objeto que contenha apenas os dados daquele
domínio a partir de um subset do objeto original do plano amostral.
Estimação para vários domínios
Em outros casos há interesse em estimar quantidades de interesse para
diversos domínios mutuamente exclusivos, a fim de possibilitar
comparações. Para isto, podemos utilizar a função svyby.
Para utilizá-la são necessários os seguintes argumentos:
- A variável da qual se deseja calcular a quantidade;
- A variável que define os domínios;
- O objeto do plano amostral;
A função utilizada para calcular a quantidade de interesse (svytotal,
svymean, svyratio, svyquantile, …). Se desejamos estimar a frequência
relativa de homens e mulheres em cada nível de instrução, usamos o
seguinte código:
FREQUÊNCIA DE HOMENS E MULHERES POR NÍVEL DE
INSTRUÇÃO
Caso desejemos estimar o contrário, a frequência relativa de cada
nível de instrução para cada sexo, basta inverter as variáveis
correspondentes na sintaxe:
FREQUÊNCIA DO NÍVEL DE INSTRUÇÃO POR SEXO
Também pode ser utilizado para estimar a renda média efetiva por
Unidade da Federação:
RENDA MÉDIA EFETIVA POR UNIDADE DA FEDERAÇÃO
É possível definir domínios que sejam cruzamentos de variáveis
categóricas com a função interaction. Na função svyby também é possível
utilizar o argumento vartype=“cv” caso desejemos que no output apareça o
coeficiente de variação ao invés do erro padrão da estimativa. Para
estimar a taxa de desocupação por sexo e cor ou raça utilizando as
funções svyratio e svyby e o respectivo cv:
TAXA DE DESOCUPAÇÃO POR SEXO E COR/RAÇA
LS0tDQp0aXRsZTogIlBOQURDIHBhcmEgYSBSZWdpw6NvIE1ldHJvcG9saXRhbmEgZGUgQ3VyaXRpYmEgKFJNQykiDQphdXRob3I6ICJMdWl6IENhcmxvcyBSLiBOZWR1emlhayINCnN1YnRpdGxlOiAiUFVDLVBSLCAyMiBkZSBhZ29zdG8gZGUgMjAyMyINCm91dHB1dDoNCiAgaHRtbF9ub3RlYm9vazogZGVmYXVsdA0KICBodG1sX2RvY3VtZW50OiBkZWZhdWx0DQogIHBkZl9kb2N1bWVudDogZGVmYXVsdA0KLS0tDQojIEluZm9ybWHDp8O1ZXMgYsOhc2ljYXMgc29icmUgYSBiaWJsaW90ZWNhIFtQTkFEY0lCR0VdKGh0dHBzOi8vcnB1YnMuY29tL2dhYnJpZWwtYXNzdW5jYW8taWJnZS9wbmFkYykNCg0KTyBwYWNvdGUgKlBOQURjSUJHRSogZm9pIGRlc2Vudm9sdmlkbyBwYXJhIGZhY2lsaXRhciBvIGRvd25sb2FkLCBpbXBvcnRhw6fDo28gZSBhbsOhbGlzZSBkb3MgZGFkb3MgYW1vc3RyYWlzIGRhIFBlc3F1aXNhIE5hY2lvbmFsIHBvciBBbW9zdHJhIGRlIERvbWljw61saW9zIENvbnTDrW51YSByZWFsaXphZGEgcGVsbyBJbnN0aXR1dG8gQnJhc2lsZWlybyBkZSBHZW9ncmFmaWEgZSBFc3RhdMOtc3RpY2EgLSBJQkdFLg0KDQpBIFBOQUQgQ29udMOtbnVhIHBvc3N1aSB0csOqcyB0aXBvcyBkZSBtaWNyb2RhZG9zOg0KDQotIFRyaW1lc3RyYWwsIHF1ZSBjb250w6ltIGEgcGFydGUgYsOhc2ljYSBpbnZlc3RpZ2FkYSBwZWxhIHBlc3F1aXNhLCBjb250ZW5kbyB2YXJpw6F2ZWlzIGNvbmp1bnR1cmFpcyBkZSBtZXJjYWRvIGRlIHRyYWJhbGhvIHJlZmVyZW50ZXMgYSB1bSB0cmltZXN0cmUgY2l2aWw7DQoNCi0gQW51YWwgYWN1bXVsYWRvcyBlbSBkZXRlcm1pbmFkYSB2aXNpdGEsIHF1ZSBjb250w6ltIHRlbWFzIGUgdMOzcGljb3Mgc3VwbGVtZW50YXJlcyBwZXNxdWlzYWRvcyBhbyBsb25nbyBkbyBhbm8gZW0gZGV0ZXJtaW5hZGEgdmlzaXRhOw0KDQotIEFudWFsIGNvbmNlbnRyYWRvcyBlbSBkZXRlcm1pbmFkbyB0cmltZXN0cmUsIHF1ZSBjb250w6ltIHRlbWFzIGUgdMOzcGljb3Mgc3VwbGVtZW50YXJlcyBwZXNxdWlzYWRvcyBlbSB0cmltZXN0cmVzIGVzcGVjw61maWNvcyBkbyBhbm8uDQoNCi0gQWzDqW0gZGlzc28sIGEgcGFydGlyIGRlIDIwMjEgZm9yYW0gaW5jbHXDrWRvcyBtw7NkdWxvcyBhcGxpY2Fkb3Mgc29tZW50ZSBwYXJhIHVtIG1vcmFkb3Igc2VsZWNpb25hZG8gbmEgUE5BRCBDb250w61udWEsIHBhcmEgdGVtYXMgZSB0w7NwaWNvcyBzdXBsZW1lbnRhcmVzIGVzcGVjw61maWNvcy4NCg0KQXRyYXbDqXMgZG8gb2JqZXRvIGNyaWFkbyBjb20gZXN0ZSBwYWNvdGUsIMOpIHBvc3PDrXZlbCB1dGlsaXphciBvIHBhY290ZSBzdXJ2ZXkgcGFyYSByZWFsaXphciBhbsOhbGlzZXMgY29uc2lkZXJhbmRvIG8gZWZlaXRvIGRvIGVzcXVlbWEgZGUgc2VsZcOnw6NvIHV0aWxpemFkbyBubyBwbGFubyBhbW9zdHJhbCBjb21wbGV4byBkYSBwZXNxdWlzYSBlIGNhbGN1bGFyIGNvcnJldGFtZW50ZSBhcyBtZWRpZGFzIGRlIGVycm8gZGFzIGVzdGltYXRpdmFzLCBjb25zaWRlcmFuZG8gbyBlc3RpbWFkb3IgZGUgcMOzcy1lc3RyYXRpZmljYcOnw6NvIHV0aWxpemFkbyBuYSBwZXNxdWlzYS4NCg0KYGBge3IsIGVjaG89RkFMU0UsIGluY2x1ZGU9RkFMU0V9DQojIGRvd25sb2FkIGRhcyBiaWJsaW90ZWNhcw0KI2luc3RhbGwucGFja2FnZXMoIlBOQURjSUJHRSIpDQojaW5zdGFsbC5wYWNrYWdlcygic3VydmV5IikNCiNpbnN0YWxsLnBhY2thZ2VzKCJ0aWR5dmVyc2UiKQ0KYGBgDQoNCmBgYHtyLCBlY2hvPUZBTFNFLCBpbmNsdWRlPUZBTFNFfQ0KIyBsZWl0dXJhIGRhcyBiaWJsaW90ZWNhcw0KbGlicmFyeShQTkFEY0lCR0UpDQpsaWJyYXJ5KHN1cnZleSkNCmxpYnJhcnkodGlkeXZlcnNlKQ0KYGBgDQoNCiMgSW1wb3J0YcOnw6NvICpvbmxpbmUqIGRvcyBtaWNyb2RhZG9zIHRyaW1lc3RyYWlzIHBhcmEgdmFyacOhdmVpcyBzZWxlY2lvbmFkYXMNCg0KYGBge3IsIGVjaG89RkFMU0UsIGluY2x1ZGU9RkFMU0V9DQojdmFyaWF2ZWlzX3NlbGVjaW9uYWRhcyA8LSBjKCJVRiIsIlYyMDAxIiwiVjIwMDUiLCJWMjAwNyIsIlYyMDA5IiwiVjIwMTAiLCJWMzAwNyIsIlZEMzAwNCIsIlZENDAwMSIsIlZENDAwMiIsIlZENDAyMCIsIlZENDAzNSIpDQojZGFkb3NQTkFEYyA8LSBnZXRfcG5hZGMoeWVhcj0yMDIzLCBxdWFydGVyPTIsIHZhcnM9dmFyaWF2ZWlzX3NlbGVjaW9uYWRhcywgZGVmbGF0b3I9VFJVRSwgZGVzaWduPVRSVUUpDQojZGFkb3NQTkFEYw0KI3dyaXRlLmNzdihkYWRvc1BOQURjLCBmaWxlID0gInBuYWRjLmNzdiIsIHJvdy5uYW1lcyA9IEZBTFNFKQ0KYGBgDQoNCmBgYHtyLCBlY2hvPUZBTFNFLCBpbmNsdWRlPUZBTFNFfQ0KIyBwYXJhIHVzYXIgbyBnZ3Bsb3QsIMOpIG5lY2Vzc8OhcmlvIHRyYWJhbGhhciBjb20gdGliYmxlcywgdXRpbGl6YW5kbyBvIGFyZ3VtZW50byBkZXNpZ249RkFMU0UNCiNnZ3Bsb3QoZGF0YSA9IGRhZG9zUE5BRGMpICsgDQojICBnZW9tX3BvaW50KG1hcHBpbmcgPSBhZXMoeCA9IFYyMDA3LCB5ID0gVkQzMDA0KSkNCmBgYA0KDQojIEFuw6FsaXNlIGNvbSBvIHBhY290ZSBzdXJ2ZXkNCg0KRGV2aWRvIGFvIHBsYW5vIGFtb3N0cmFsIGRhIFBOQUQgQ29udMOtbnVhLCDDqSBuZWNlc3PDoXJpbyBxdWUgc2VqYW0gdXRpbGl6YWRhcyBmZXJyYW1lbnRhcyBlc3BlY8OtZmljYXMgcGFyYSBhIGFuw6FsaXNlIGRlIGRhZG9zIGFtb3N0cmFpcyBjb21wbGV4b3MuIE8gcGFjb3RlIHN1cnZleSDDqSB1bSBwYWNvdGUgY3JpYWRvIGVzcGVjaWZpY2FtZW50ZSBwYXJhIGFuw6FsaXNlIGUgbW9kZWxhZ2VtIGRlIGRhZG9zIHByb3ZlbmllbnRlcyBkZSBwZXNxdWlzYXMgY29tIGVzdGVzIHRpcG9zIGRlIHBsYW5vcyBhbW9zdHJhaXMuIE1haW9yZXMgZGV0YWxoZXMgc29icmUgbyBwYWNvdGUgcG9kZW0gc2VyIGVuY29udHJhZG9zIG5vIFtzaXRlXShodHRwczovL3JwdWJzLmNvbS9nYWJyaWVsLWFzc3VuY2FvLWliZ2UvcG5hZGMpLiBBIHTDrXR1bG8gZGUgZXhlbXBsaWZpY2HDp8Ojbywgc2Vyw6NvIHV0aWxpemFkYXMgYXMgc2VndWludGVzIHZhcmnDoXZlaXM6DQoNCi0gVUY6IHVuaWRhZGUgZGEgZmVkZXJhw6fDo28uDQotIFYyMDAxOiBuw7ptZXJvIGRlIHBlc3NvYXMgbm8gZG9taWPDrWxpby4NCi0gVjIwMDU6IGNvbmRpw6fDo28gbm8gZG9taWPDrWxpbyAocGFpLCBzb2dybywgZXRjLikuDQotIFYyMDA3OiBzZXhvLg0KLSBWMjAwOTogaWRhZGUgZG8gbW9yYWRvciBuYSBkYXRhIGRlIHJlZmVyw6puY2lhLg0KLSBWMjAxMDogY29yIG91IHJhw6dhLg0KLSBWMzAwNzogLi4uIGrDoSBpbmNsdWkgYWxndW0gb3V0cm8gY3Vyc28gZGUgZ3JhZHVhw6fDo28uDQotIFZEMzAwNDogbsOtdmVsIGRlIGluc3RydcOnw6NvIG1haXMgZWxldmFkbyBhbGNhbsOnYWRvLg0KLSBWRDQwMDE6IGNvbmRpw6fDo28gZW0gcmVsYcOnw6NvIMOgIGZvcsOnYSBkZSB0cmFiYWxoby4NCi0gVkQ0MDAyOiBjb25kacOnw6NvIGRlIG9jdXBhw6fDo28uDQotIFZENDAyMDogcmVuZGltZW50byBtZW5zYWwgZWZldGl2by4NCi0gVkQ0MDM1OiBob3JhcyB0cmFiYWxoYWRhcyBuYSBzZW1hbmEgZGUgcmVmZXLDqm5jaWEuDQoNCmBgYHtyLCBlY2hvPUZBTFNFLCBpbmNsdWRlPUZBTFNFfQ0KdmFyaWF2ZWlzX3NlbGVjaW9uYWRhcyA8LSBjKCJVRiIsIlYyMDAxIiwiVjIwMDUiLCJWMjAwNyIsIlYyMDA5IiwiVjIwMTAiLCJWMzAwNyIsIlZEMzAwNCIsIlZENDAwMSIsIlZENDAwMiIsIlZENDAyMCIsIlZENDAzNSIpDQoNCmRhZG9zUE5BRGMgPC0gZ2V0X3BuYWRjKHllYXI9MjAyMywgcXVhcnRlcj0yLCB2YXJzPXZhcmlhdmVpc19zZWxlY2lvbmFkYXMsIGRlZmxhdG9yPVRSVUUsIGRlc2lnbj1UUlVFKQ0KYGBgDQoNCiMgRXN0aW1hbmRvIFRvdGFpcw0KDQojIyBWYXJpw6F2ZWlzIE51bcOpcmljYXMNCg0Kw4kgcG9zc8OtdmVsIGVzdGltYXIgKip0b3RhaXMgcG9wdWxhY2lvbmFpcyBkZSB2YXJpw6F2ZWlzIG51bcOpcmljYXMqKi4NCg0KKipSRU5EQSBUT1RBTCoqDQoNCmBgYHtyLCBlY2hvPUZBTFNFLCBpbmNsdWRlPVRSVUV9DQojIHJlbmRhIHRvdGFsDQp0b3RhbHJlbmRhIDwtIHN2eXRvdGFsKHg9flZENDAyMCwgZGVzaWduPWRhZG9zUE5BRGMsIG5hLnJtPVRSVUUpDQp0b3RhbHJlbmRhDQpgYGANCiMjIFZhcmnDoXZlaXMgQ2F0ZWfDs3JpY2FzDQoNCsOJIHBvc3PDrXZlbCBlc3RpbWFyICoqdG90YWlzIHBvcHVsYWNpb25haXMgcG9yIGNhdGVnb3JpYXMqKi4NCg0KKipUT1RBTCBTRVhPKioNCg0KYGBge3IsIGVjaG89RkFMU0UsIGluY2x1ZGU9VFJVRX0NCiMgdG90YWwgcG9wdWxhY2lvbmFsIHBlbGEgY2F0ZWdvcmlhIHNleG8NCnRvdGFsc2V4byA8LSBzdnl0b3RhbCh4PX5WMjAwNywgZGVzaWduPWRhZG9zUE5BRGMsIG5hLnJtPVRSVUUpDQp0b3RhbHNleG8NCmBgYA0KDQrDiSBwb3Nzw612ZWwgZXN0aW1hciBvIHRvdGFsIGRlIG1haXMgZGUgdW1hIHZhcmnDoXZlbCwgbm8gbWVzbW8gY8OzZGlnby4NCg0KKipUT1RBTCBTRVhPL1JBw4dBKioNCg0KYGBge3IsIGVjaG89RkFMU0UsIGluY2x1ZGU9VFJVRX0NCnRvdGFsc2V4b3JhY2EgPC0gc3Z5dG90YWwoeD1+VjIwMDcrVjIwMTAsIGRlc2lnbj1kYWRvc1BOQURjLCBuYS5ybT1UUlVFKQ0KdG90YWxzZXhvcmFjYQ0KYGBgDQoNCsOJIHBvc3PDrXZlbCBlc3RpbWFyIG8gKipjcnV6YW1lbnRvIGRlIGR1YXMgb3UgbWFpcyB2YXJpw6F2ZWlzIGNhdGVnw7NyaWNhcyoqLg0KDQoqKlRPVEFMIFNFWE8gRSBSQcOHQSoqDQoNCmBgYHtyLCBlY2hvPUZBTFNFLCBpbmNsdWRlPVRSVUV9DQp0b3RhbHNleG9FcmFjYSA8LSBzdnl0b3RhbCh4PX5pbnRlcmFjdGlvbihWMjAwNyxWMjAxMCksIGRlc2lnbj1kYWRvc1BOQURjLCBuYS5ybT1UUlVFKQ0KZnRhYmxlKHg9dG90YWxzZXhvRXJhY2EpDQpgYGANCg0KIyBFc3RpbWFuZG8gUHJvcG9yw6fDtWVzDQoNCkVzdGltYW5kbyBhIHByb3BvcsOnw6NvIGRlIGNhZGEgc2V4byBuYSBwb3B1bGHDp8Ojby4NCg0KKipQUk9QT1LDh8ODTyBET1MgU0VYT1MgTkEgUE9QVUxBw4fDg08qKg0KDQpgYGB7ciwgZWNobz1GQUxTRSwgaW5jbHVkZT1UUlVFfQ0KcHJvcHNleG8gPC0gc3Z5bWVhbih4PX5WMjAwNywgZGVzaWduPWRhZG9zUE5BRGMsIG5hLnJtPVRSVUUpDQpwcm9wc2V4bw0KYGBgDQoNCsOJIHBvc3PDrXZlbCBlc3RpbWFyIGEgcHJvcG9yw6fDo28gY29tIG1haXMgZGUgZHVhcyB2YXJpw6F2ZWlzIChzZXhvIGUgY29yIG91IHJhw6dhKS4NCg0KKipQUk9QT1LDh8ODTyBET1MgU0VYT1MgREUgQUNPUkRPIENPTSBBIFJBw4dBIE9VIENPUioqDQoNCmBgYHtyLCBlY2hvPUZBTFNFLCBpbmNsdWRlPVRSVUV9DQpwcm9wc2V4b3JhY2EgPC0gc3Z5bWVhbih4PX5WMjAwNytWMjAxMCwgZGVzaWduPWRhZG9zUE5BRGMsIG5hLnJtPVRSVUUpDQpwcm9wc2V4b3JhY2ENCmBgYA0KDQrDiSBwb3Nzw612ZWwgYWluZGEgZXN0aW1hciBhIHByb3BvcsOnw6NvIGRlIHVtIGNydXphbWVudG8gZGUgdmFyacOhdmVpcywgcG9yIGV4ZW1wbG8sIHNleG8gZSBjb3IuDQoNCioqQ1JVWkFNRU5UTyBTRVhPIFggQ09SKioNCg0KYGBge3IsIGVjaG89RkFMU0UsIGluY2x1ZGU9VFJVRX0NCnByb3BzZXhvRXJhY2EgPC0gc3Z5bWVhbih4PX5pbnRlcmFjdGlvbihWMjAwNyxWMjAxMCksIGRlc2lnbj1kYWRvc1BOQURjLCBuYS5ybT1UUlVFKQ0KI2Z0YWJsZSh4PXByb3BzZXhvRXJhY2EpDQpwcm9wc2V4b0VyYWNhDQpgYGANCg0KIyBFc3RpbWFuZG8gcmF6w7Vlcw0KDQpBbMOpbSBkYXMgcHJvcG9yw6fDtWVzLCB0YW1iw6ltIMOpIHBvc3PDrXZlbCBlc3RpbWFyIHJhesO1ZXMgZW50cmUgZHVhcyB2YXJpw6F2ZWlzLiBwb3IgZXhlbXBsbywgYSAqKnRheGEgZGUgZGVzb2N1cGHDp8OjbyoqIMOpIGEgcmF6w6NvIGVudHJlIGEgdmFyacOhdmVsICoqUGVzc29hcyBEZXNvY3VwYWRhcyoqIGUgKipQZXNzb2FzIG5hIEZvcsOnYSBkZSBUcmFiYWxobyoqLg0KDQpgYGB7ciwgZWNobz1GQUxTRSwgaW5jbHVkZT1UUlVFfQ0KdHhkZXNvY3VwIDwtIHN2eXJhdGlvKG51bWVyYXRvcj1+KFZENDAwMj09IlBlc3NvYXMgZGVzb2N1cGFkYXMiKSwgZGVub21pbmF0b3I9fihWRDQwMDE9PSJQZXNzb2FzIG5hIGZvcsOnYSBkZSB0cmFiYWxobyIpLCBkZXNpZ249ZGFkb3NQTkFEYywgbmEucm09VFJVRSkNCiMgcmVzdWx0YWRvIGRldmUgc2VyIG11bHRpcGxpY2FkbyBwb3IgMTAwDQp0eGRlc29jdXANCmBgYA0KDQojIEVzdGltYcOnw6NvIHBhcmEgdmFyacOhdmVpcyBkZSByZW5kaW1lbnRvIGRlZmxhY2lvbmFkYXMNCg0KUGFyYSBlc3RpbWFyIHRvdGFpcyBlIG3DqWRpYXMgZGUgdmFyacOhdmVpcyBkZSByZW5kaW1lbnRvIGRlZmxhY2lvbmFkYXMsIG91IHNlamEsIGFvIGludsOpcyBkZSBvYnRlciBhcyBlc3RpbWF0aXZhcyBzb2IgbyB2YWxvciBub21pbmFsIGRlc3RhcyB2YXJpw6F2ZWlzLCBwYXNzYXIgYSBvYnRlciBhcyBlc3RpbWF0aXZhcyBzb2IgbyB2YWxvciByZWFsLiBQcmltZWlyYW1lbnRlLCDDqSBuZWNlc3PDoXJpbyByZWFsaXphciBhIGNyaWHDp8OjbyBkYSB2YXJpw6F2ZWwgZGUgcmVuZGltZW50byBjb20gb3MgdmFsb3JlcyBkZWZsYWNpb25hZG9zIG5vcyBtaWNyb2RhZG9zLg0KDQpgYGB7ciwgZWNobz1GQUxTRSwgaW5jbHVkZT1UUlVFfQ0KZGFkb3NQTkFEYyR2YXJpYWJsZXMgPC0gdHJhbnNmb3JtKGRhZG9zUE5BRGMkdmFyaWFibGVzLCBWRDQwMjBfcmVhbD1WRDQwMjAqRWZldGl2bykNCmBgYA0KKipSRU5EQSBUT1RBTCBSRUFMKioNCg0KYGBge3IsIGVjaG89RkFMU0UsIGluY2x1ZGU9VFJVRX0NCnRvdGFscmVuZGFfcmVhbCA8LSBzdnl0b3RhbCh4PX5WRDQwMjBfcmVhbCwgZGVzaWduPWRhZG9zUE5BRGMsIG5hLnJtPVRSVUUpDQp0b3RhbHJlbmRhX3JlYWwNCmBgYA0KKipNw4lESUEgUkVOREEgUkVBTCBUT1RBTCoqDQpgYGB7ciwgZWNobz1GQUxTRSwgaW5jbHVkZT1UUlVFfQ0KbWVkaWFyZW5kYV9yZWFsIDwtIHN2eW1lYW4oeD1+VkQ0MDIwX3JlYWwsIGRlc2lnbj1kYWRvc1BOQURjLCBuYS5ybT1UUlVFKQ0KbWVkaWFyZW5kYV9yZWFsDQpgYGANCiMgRXN0aW1hw6fDo28gcGFyYSB1bSBEb23DrW5pbw0KDQpNdWl0YXMgdmV6ZXMgcXVlcmVtb3MgZmF6ZXIgdW1hIGFuw6FsaXNlIHBhcmEgdW0gZG9tw61uaW8gZXNwZWPDrWZpY28gZGEgcG9wdWxhw6fDo28uIENvbSBvIHBhY290ZSBzdXJ2ZXksIGVzc2UgZG9tw61uaW8gcG9kZSBzZXIgc2VsZWNpb25hZG8gdXRpbGl6YW5kbyBhIGZ1bsOnw6NvIHN1YnNldCBubyBvYmpldG8gZG8gcGxhbm8gYW1vc3RyYWwsIGFwbGljYW5kbyBhIGNvbmRpw6fDo28gcXVlIGRlZmluZSBhcXVlbGUgZG9tw61uaW8uIMOJIG5lY2Vzc8OhcmlvIHF1ZSBhIHNlbGXDp8OjbyBkZXNzZSBkb23DrW5pbyBub3MgZGFkb3Mgc2VqYSBmZWl0YSBzb21lbnRlICoqYXDDs3MqKiBhIGNyaWHDp8OjbyBkbyBvYmpldG8gcXVlIGRlZmluZSBvIHBsYW5vIGFtb3N0cmFsLCBjYXNvIGNvbnRyw6FyaW8gcG9kZXLDoSBzZXIgb2J0aWRvIHJlc3VsdGFkb3MgaW5jb3JyZXRvcy4gUGFyYSBhIHNlbGXDp8OjbyBkb3MgZG9tw61uaW9zIHBvZGVtIHNlciB1dGlsaXphZGFzICoqY29uZGljaW9uYWlzIGNvbSBpZ3VhbGRhZGUqKiwgY29tbyBhYmFpeG86DQoNCioqTcOJRElBIFJFTkRBIE1VTEhFUioqDQpgYGB7ciwgZWNobz1GQUxTRSwgaW5jbHVkZT1UUlVFfQ0KbWVkaWFyZW5kYU0gPC0gc3Z5bWVhbih4PX5WRDQwMjAsIGRlc2lnbj1zdWJzZXQoZGFkb3NQTkFEYywgVjIwMDc9PSJNdWxoZXIiKSwgbmEucm09VFJVRSkNCm1lZGlhcmVuZGFNDQpgYGANCg0KT3UgKipjb25kaWNpb25haXMgY29tIGRlc2lndWFsZGFkZSoqLCBjb21vIGFiYWl4bzoNCg0KKipUQVhBIERFIERFU09DVVBBw4fDg08gUEFSQSBQRVNTT0FTIE1BSU9SRVMgREUgMjUgQU5PUyoqDQoNCmBgYHtyLCBlY2hvPUZBTFNFLCBpbmNsdWRlPVRSVUV9DQp0eGRlc29jdXAyNSA8LSBzdnlyYXRpbyhudW1lcmF0b3I9fihWRDQwMDI9PSJQZXNzb2FzIGRlc29jdXBhZGFzIiksIGRlbm9taW5hdG9yPX4oVkQ0MDAxPT0iUGVzc29hcyBuYSBmb3LDp2EgZGUgdHJhYmFsaG8iKSwgZGVzaWduPXN1YnNldChkYWRvc1BOQURjLCBWMjAwOT49MjUpLCBuYS5ybT1UUlVFKQ0KdHhkZXNvY3VwMjUNCmBgYA0KDQpBbMOpbSBkaXNzbywgw6kgcG9zc8OtdmVsIHV0aWxpemFyICoqbcO6bHRpcGxhcyBjb25kacOnw7VlcyBjb20gb3Mgb3BlcmFkb3MgbMOzZ2ljb3MgJiAo4oCcZeKAnSkgZSB8ICjigJxvdeKAnSkqKiwgcGFyYSBlc3RpbWFyIGEgZnJlcXXDqm5jaWEgcmVsYXRpdmEgZGUgY2FkYSBuw612ZWwgZGUgaW5zdHJ1w6fDo28gcGFyYSBob21lbnMgcGFyZG9zIGNvbSBtYWlzIGRlIDMwIGFub3MsIHBvciBleGVtcGxvLg0KDQoqKk7DjVZFTCBERSBJTlNUUlXDh8ODTyBQQVJBIEhPTUVOUyBERSBDT1IgUEFSREEgRSBNQUlPUkVTIERFIDMwIEFOT1MqKg0KDQpgYGB7ciwgZWNobz1GQUxTRSwgaW5jbHVkZT1UUlVFfQ0Kbml2ZWxpbnN0ckhQMzAgPC0gc3Z5bWVhbih4PX5WRDMwMDQsIGRlc2lnbj1zdWJzZXQoZGFkb3NQTkFEYywgVjIwMDc9PSJIb21lbSIgJiBWMjAxMD09IlBhcmRhIiAmIFYyMDA5PjMwKSwgbmEucm09VFJVRSkNCm5pdmVsaW5zdHJIUDMwDQpgYGANCg0KQWzDqW0gZGlzc28sIGNhc28gZGVzZWplIHJlYWxpemFyIGRpdmVyc2FzIGFuw6FsaXNlcyBwYXJhIHVtIG1lc21vIGRvbcOtbmlvLCDDqSBwb3Nzw612ZWwgY3JpYXIgdW0gb2JqZXRvIHF1ZSBjb250ZW5oYSBhcGVuYXMgb3MgZGFkb3MgZGFxdWVsZSBkb23DrW5pbyBhIHBhcnRpciBkZSB1bSBzdWJzZXQgZG8gb2JqZXRvIG9yaWdpbmFsIGRvIHBsYW5vIGFtb3N0cmFsLg0KDQpgYGB7ciwgZWNobz1GQUxTRSwgaW5jbHVkZT1UUlVFfQ0KZGFkb3NQTkFEY19tdWxoZXJlcyA8LSBzdWJzZXQoZGFkb3NQTkFEYywgVjIwMDc9PSJNdWxoZXIiKQ0KZGFkb3NQTkFEY19tdWxoZXJlcw0KYGBgDQoNCiMgRXN0aW1hw6fDo28gcGFyYSB2w6FyaW9zIGRvbcOtbmlvcw0KDQpFbSBvdXRyb3MgY2Fzb3MgaMOhIGludGVyZXNzZSBlbSBlc3RpbWFyIHF1YW50aWRhZGVzIGRlIGludGVyZXNzZSBwYXJhIGRpdmVyc29zIGRvbcOtbmlvcyBtdXR1YW1lbnRlIGV4Y2x1c2l2b3MsIGEgZmltIGRlIHBvc3NpYmlsaXRhciBjb21wYXJhw6fDtWVzLiBQYXJhIGlzdG8sIHBvZGVtb3MgdXRpbGl6YXIgYSBmdW7Dp8OjbyBzdnlieS4NCg0KUGFyYSB1dGlsaXrDoS1sYSBzw6NvIG5lY2Vzc8OhcmlvcyBvcyBzZWd1aW50ZXMgYXJndW1lbnRvczoNCg0KLSBBIHZhcmnDoXZlbCBkYSBxdWFsIHNlIGRlc2VqYSBjYWxjdWxhciBhIHF1YW50aWRhZGU7DQotIEEgdmFyacOhdmVsIHF1ZSBkZWZpbmUgb3MgZG9tw61uaW9zOw0KLSBPIG9iamV0byBkbyBwbGFubyBhbW9zdHJhbDsNCg0KQSBmdW7Dp8OjbyB1dGlsaXphZGEgcGFyYSBjYWxjdWxhciBhIHF1YW50aWRhZGUgZGUgaW50ZXJlc3NlIChzdnl0b3RhbCwgc3Z5bWVhbiwgc3Z5cmF0aW8sIHN2eXF1YW50aWxlLCDigKYpLiBTZSBkZXNlamFtb3MgZXN0aW1hciBhIGZyZXF1w6puY2lhIHJlbGF0aXZhIGRlIGhvbWVucyBlIG11bGhlcmVzIGVtIGNhZGEgbsOtdmVsIGRlIGluc3RydcOnw6NvLCB1c2Ftb3MgbyBzZWd1aW50ZSBjw7NkaWdvOg0KDQoqKkZSRVFVw4pOQ0lBIERFIEhPTUVOUyBFIE1VTEhFUkVTIFBPUiBOw41WRUwgREUgSU5TVFJVw4fDg08qKg0KDQpgYGB7ciwgZWNobz1GQUxTRSwgaW5jbHVkZT1UUlVFfQ0KZnJlcVNleG9JbnN0ciA8LSBzdnlieShmb3JtdWxhPX5WMjAwNywgYnk9flZEMzAwNCwgZGVzaWduPWRhZG9zUE5BRGMsIEZVTj1zdnltZWFuLCBuYS5ybT1UUlVFKQ0KZnJlcVNleG9JbnN0cg0KYGBgDQoNCkNhc28gZGVzZWplbW9zIGVzdGltYXIgbyBjb250csOhcmlvLCBhIGZyZXF1w6puY2lhIHJlbGF0aXZhIGRlIGNhZGEgbsOtdmVsIGRlIGluc3RydcOnw6NvIHBhcmEgY2FkYSBzZXhvLCBiYXN0YSBpbnZlcnRlciBhcyB2YXJpw6F2ZWlzIGNvcnJlc3BvbmRlbnRlcyBuYSBzaW50YXhlOg0KDQoqKkZSRVFVw4pOQ0lBIERPIE7DjVZFTCBERSBJTlNUUlXDh8ODTyBQT1IgU0VYTyoqDQoNCmBgYHtyLCBlY2hvPUZBTFNFLCBpbmNsdWRlPVRSVUV9DQpmcmVxSW5zdHJTZXhvIDwtIHN2eWJ5KGZvcm11bGE9flZEMzAwNCwgYnk9flYyMDA3LCBkZXNpZ249ZGFkb3NQTkFEYywgRlVOPXN2eW1lYW4sIG5hLnJtPVRSVUUpDQpmcmVxSW5zdHJTZXhvDQpgYGANCg0KVGFtYsOpbSBwb2RlIHNlciB1dGlsaXphZG8gcGFyYSBlc3RpbWFyIGEgcmVuZGEgbcOpZGlhIGVmZXRpdmEgcG9yIFVuaWRhZGUgZGEgRmVkZXJhw6fDo286DQoNCioqUkVOREEgTcOJRElBIEVGRVRJVkEgUE9SIFVOSURBREUgREEgRkVERVJBw4fDg08qKg0KDQpgYGB7ciwgZWNobz1GQUxTRSwgaW5jbHVkZT1UUlVFfQ0KbWVkaWFSZW5kYVVGIDwtIHN2eWJ5KGZvcm11bGE9flZENDAyMCwgYnk9flVGLCBkZXNpZ249ZGFkb3NQTkFEYywgRlVOPXN2eW1lYW4sIG5hLnJtPVRSVUUpDQptZWRpYVJlbmRhVUYNCmBgYA0KDQrDiSBwb3Nzw612ZWwgZGVmaW5pciBkb23DrW5pb3MgcXVlIHNlamFtIGNydXphbWVudG9zIGRlIHZhcmnDoXZlaXMgY2F0ZWfDs3JpY2FzIGNvbSBhIGZ1bsOnw6NvIGludGVyYWN0aW9uLg0KTmEgZnVuw6fDo28gc3Z5YnkgdGFtYsOpbSDDqSBwb3Nzw612ZWwgdXRpbGl6YXIgbyBhcmd1bWVudG8gdmFydHlwZT3igJxjduKAnSBjYXNvIGRlc2VqZW1vcyBxdWUgbm8gb3V0cHV0IGFwYXJlw6dhIG8gY29lZmljaWVudGUgZGUgdmFyaWHDp8OjbyBhbyBpbnbDqXMgZG8gZXJybyBwYWRyw6NvIGRhIGVzdGltYXRpdmEuIFBhcmEgZXN0aW1hciBhIHRheGEgZGUgZGVzb2N1cGHDp8OjbyBwb3Igc2V4byBlIGNvciBvdSByYcOnYSB1dGlsaXphbmRvIGFzIGZ1bsOnw7VlcyBzdnlyYXRpbyBlIHN2eWJ5IGUgbyByZXNwZWN0aXZvIGN2Og0KDQoqKlRBWEEgREUgREVTT0NVUEHDh8ODTyBQT1IgU0VYTyBFIENPUi9SQcOHQSoqDQoNCmBgYHtyLCBlY2hvPUZBTFNFLCBpbmNsdWRlPVRSVUV9DQp0eGRlc29jdXBTZXhvUmFjYSA8LSBzdnlieShmb3JtdWxhPX4oVkQ0MDAyPT0iUGVzc29hcyBkZXNvY3VwYWRhcyIpLCBkZW5vbWluYXRvcj1+KFZENDAwMT09IlBlc3NvYXMgbmEgZm9yw6dhIGRlIHRyYWJhbGhvIiksIGJ5PX5pbnRlcmFjdGlvbihWMjAwNyxWMjAxMCksIGRlc2lnbj1kYWRvc1BOQURjLCBGVU49c3Z5cmF0aW8sIHZhcnR5cGU9ImN2IiwgbmEucm09VFJVRSkNCnR4ZGVzb2N1cFNleG9SYWNhDQpgYGANCg0KDQoNCg0KDQo=