From d9d7a2b78c4b7c47cfe4f096a883f4904f30e6b9 Mon Sep 17 00:00:00 2001 From: Lachezar Tsonov Date: Fri, 14 Mar 2025 15:49:33 +0200 Subject: [PATCH] Remove SendAksInitData as it's obsolete. --- .../actions/send_aks_init_data_handler.go | 154 ------------------ .../send_aks_init_data_handler_test.go | 42 ----- internal/castai/client.go | 16 -- internal/castai/mock/client.go | 14 -- internal/castai/types.go | 12 -- internal/controller/controller.go | 1 - ...D209E745FE4FC85066CBA305F32F9A1CFD89A3.prv | 33 ---- .../config/1.settings | 11 -- internal/testdata/aks/ovf-env.xml | 32 ---- 9 files changed, 315 deletions(-) delete mode 100644 internal/actions/send_aks_init_data_handler.go delete mode 100644 internal/actions/send_aks_init_data_handler_test.go delete mode 100644 internal/testdata/aks/CBD209E745FE4FC85066CBA305F32F9A1CFD89A3.prv delete mode 100644 internal/testdata/aks/Microsoft.Azure.Extensions.CustomScript-2.1.6/config/1.settings delete mode 100644 internal/testdata/aks/ovf-env.xml diff --git a/internal/actions/send_aks_init_data_handler.go b/internal/actions/send_aks_init_data_handler.go deleted file mode 100644 index 280c91ab..00000000 --- a/internal/actions/send_aks_init_data_handler.go +++ /dev/null @@ -1,154 +0,0 @@ -package actions - -import ( - "bytes" - "context" - "encoding/base64" - "encoding/json" - "errors" - "fmt" - "io" - "io/fs" - "os" - "os/exec" - "path" - "path/filepath" - "regexp" - "strings" - - "github.com/sirupsen/logrus" - - "github.com/castai/cluster-controller/internal/castai" -) - -var _ ActionHandler = &SendAKSInitDataHandler{} - -func NewSendAKSInitDataHandler(log logrus.FieldLogger, client castai.CastAIClient) *SendAKSInitDataHandler { - return &SendAKSInitDataHandler{ - log: log, - client: client, - - baseDir: "/var/lib/waagent", - cloudConfigPath: "/var/lib/waagent/ovf-env.xml", - } -} - -type SendAKSInitDataHandler struct { - log logrus.FieldLogger - client castai.CastAIClient - - baseDir string - cloudConfigPath string -} - -func (s *SendAKSInitDataHandler) Handle(ctx context.Context, _ *castai.ClusterAction) error { - cloudConfig, err := s.readCloudConfigBase64(s.cloudConfigPath) - if err != nil { - return fmt.Errorf("reading cloud config: %w", err) - } - settingsPath, err := s.findSettingsPath(s.baseDir) - if err != nil { - return fmt.Errorf("protected settings path: %w", err) - } - settings, err := s.readSettings(settingsPath) - if err != nil { - return fmt.Errorf("protected settings read: %w", err) - } - protectedSettings, err := s.decryptProtectedSettings(settings) - if err != nil { - return fmt.Errorf("protected settings decrypt failed: %w", err) - } - return s.client.SendAKSInitData(ctx, &castai.AKSInitDataRequest{ - CloudConfigBase64: string(cloudConfig), - ProtectedSettingsBase64: base64.StdEncoding.EncodeToString(protectedSettings), - }) -} - -var ( - customDataRegex = regexp.MustCompile(`(.*?)<\/ns1:CustomData>`) - errNoXML = errors.New("no custom data xml tag found") -) - -// readCloudConfigBase64 extracts base64 encoded cloud config content from XML file. -func (s *SendAKSInitDataHandler) readCloudConfigBase64(cloudConfigPath string) ([]byte, error) { - xmlContent, err := os.ReadFile(cloudConfigPath) - if err != nil { - return nil, err - } - matches := customDataRegex.FindSubmatch(xmlContent) - if len(matches) < 2 { - return nil, errNoXML - } - return matches[1], nil -} - -// findSettingsPath searches for custom script settings file path which contains encrypted init data env variables. -func (s *SendAKSInitDataHandler) findSettingsPath(baseDir string) (string, error) { - var res string - err := filepath.WalkDir(baseDir, func(path string, d fs.DirEntry, err error) error { - if strings.Contains(path, "Microsoft.Azure.Extensions.CustomScript-") && strings.HasSuffix(path, "settings") { - res = path - return io.EOF - } - return err - }) - if !errors.Is(err, io.EOF) { - return "", err - } - if res == "" { - return "", fmt.Errorf("settings path not found, base dir=%s", baseDir) - } - return res, nil -} - -func (s *SendAKSInitDataHandler) readSettings(settingsFilePath string) (*settings, error) { - var res settings - settingsContent, err := os.ReadFile(settingsFilePath) - if err != nil { - return nil, err - } - if err := json.Unmarshal(settingsContent, &res); err != nil { - return nil, err - } - return &res, nil -} - -func (s *SendAKSInitDataHandler) decryptProtectedSettings(settings *settings) ([]byte, error) { - protectedsettings := settings.Runtimesettings[0].Handlersettings.Protectedsettings - protectedSettingsBytes, err := base64.StdEncoding.DecodeString(protectedsettings) - if err != nil { - return nil, err - } - thumbprint := settings.Runtimesettings[0].Handlersettings.Protectedsettingscertthumbprint - - args := []string{ - "smime", - "-decrypt", - "-binary", - "-inform", "DEM", - "-inkey", path.Join(s.baseDir, fmt.Sprintf("%s.prv", thumbprint)), - } - cmd := exec.Command( - "openssl", - args..., - ) - cmd.Stdin = bytes.NewBuffer(protectedSettingsBytes) - var resBuf, errBuf bytes.Buffer - cmd.Stdout = &resBuf - cmd.Stderr = &errBuf - s.log.Debugf("running cmd: openssl %s", strings.Join(args, " ")) - if err := cmd.Run(); err != nil { - return nil, fmt.Errorf("%v: %w", errBuf.String(), err) - } - return resBuf.Bytes(), err -} - -type settings struct { - Runtimesettings []struct { - Handlersettings struct { - Publicsettings struct{} `json:"publicSettings"` - Protectedsettings string `json:"protectedSettings"` - Protectedsettingscertthumbprint string `json:"protectedSettingsCertThumbprint"` - } `json:"handlerSettings"` - } `json:"runtimeSettings"` -} diff --git a/internal/actions/send_aks_init_data_handler_test.go b/internal/actions/send_aks_init_data_handler_test.go deleted file mode 100644 index dd28dcc3..00000000 --- a/internal/actions/send_aks_init_data_handler_test.go +++ /dev/null @@ -1,42 +0,0 @@ -package actions - -import ( - "context" - "testing" - - "github.com/golang/mock/gomock" - "github.com/google/uuid" - "github.com/sirupsen/logrus" - "github.com/stretchr/testify/require" - - "github.com/castai/cluster-controller/internal/castai" - mock_castai "github.com/castai/cluster-controller/internal/castai/mock" -) - -func TestAKSInitDataHandler(t *testing.T) { - log := logrus.New() - log.SetLevel(logrus.DebugLevel) - - m := gomock.NewController(t) - client := mock_castai.NewMockCastAIClient(m) - client.EXPECT().SendAKSInitData(gomock.Any(), gomock.Any()). - DoAndReturn(func(ctx context.Context, req *castai.AKSInitDataRequest) error { - require.NotEmpty(t, req.CloudConfigBase64) - require.NotEmpty(t, req.ProtectedSettingsBase64) - return nil - }) - h := SendAKSInitDataHandler{ - log: log, - client: client, - cloudConfigPath: "../testdata/aks/ovf-env.xml", - baseDir: "../testdata/aks", - } - - action := &castai.ClusterAction{ - ID: uuid.New().String(), - ActionSendAKSInitData: &castai.ActionSendAKSInitData{}, - } - ctx := context.Background() - err := h.Handle(ctx, action) - require.NoError(t, err) -} diff --git a/internal/castai/client.go b/internal/castai/client.go index 11136db6..0445d69d 100644 --- a/internal/castai/client.go +++ b/internal/castai/client.go @@ -27,7 +27,6 @@ const ( type CastAIClient interface { GetActions(ctx context.Context, k8sVersion string) ([]*ClusterAction, error) AckAction(ctx context.Context, actionID string, req *AckClusterActionRequest) error - SendAKSInitData(ctx context.Context, req *AKSInitDataRequest) error SendLog(ctx context.Context, e *LogEntry) error } @@ -126,21 +125,6 @@ func createTLSConfig(ca string) (*tls.Config, error) { }, nil } -func (c *Client) SendAKSInitData(ctx context.Context, req *AKSInitDataRequest) error { - resp, err := c.rest.R(). - SetBody(req). - SetContext(ctx). - Post(fmt.Sprintf("/v1/kubernetes/external-clusters/%s/aks-init-data", c.clusterID)) - if err != nil { - return fmt.Errorf("sending aks init data: %w", err) - } - if resp.IsError() { - return fmt.Errorf("sending aks init data: request error status_code=%d body=%s", resp.StatusCode(), resp.Body()) - } - - return nil -} - func (c *Client) SendLog(ctx context.Context, e *LogEntry) error { // Server expects fields values to be strings. If they're not it fails with BAD_REQUEST/400. // Alternatively we could use "google/protobuf/any.proto" on server side but ATM it doesn't work. diff --git a/internal/castai/mock/client.go b/internal/castai/mock/client.go index 483b3aa4..1d8c9e8d 100644 --- a/internal/castai/mock/client.go +++ b/internal/castai/mock/client.go @@ -64,20 +64,6 @@ func (mr *MockCastAIClientMockRecorder) GetActions(arg0, arg1 interface{}) *gomo return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetActions", reflect.TypeOf((*MockCastAIClient)(nil).GetActions), arg0, arg1) } -// SendAKSInitData mocks base method. -func (m *MockCastAIClient) SendAKSInitData(arg0 context.Context, arg1 *castai.AKSInitDataRequest) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "SendAKSInitData", arg0, arg1) - ret0, _ := ret[0].(error) - return ret0 -} - -// SendAKSInitData indicates an expected call of SendAKSInitData. -func (mr *MockCastAIClientMockRecorder) SendAKSInitData(arg0, arg1 interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendAKSInitData", reflect.TypeOf((*MockCastAIClient)(nil).SendAKSInitData), arg0, arg1) -} - // SendLog mocks base method. func (m *MockCastAIClient) SendLog(arg0 context.Context, arg1 *castai.LogEntry) error { m.ctrl.T.Helper() diff --git a/internal/castai/types.go b/internal/castai/types.go index b57763f4..102fb99a 100644 --- a/internal/castai/types.go +++ b/internal/castai/types.go @@ -34,7 +34,6 @@ type ClusterAction struct { ActionChartUninstall *ActionChartUninstall `json:"actionChartUninstall,omitempty"` ActionChartRollback *ActionChartRollback `json:"actionChartRollback,omitempty"` ActionDisconnectCluster *ActionDisconnectCluster `json:"actionDisconnectCluster,omitempty"` - ActionSendAKSInitData *ActionSendAKSInitData `json:"actionSendAksInitData,omitempty"` ActionCheckNodeDeleted *ActionCheckNodeDeleted `json:"actionCheckNodeDeleted,omitempty"` ActionCheckNodeStatus *ActionCheckNodeStatus `json:"actionCheckNodeStatus,omitempty"` ActionEvictPod *ActionEvictPod `json:"actionEvictPod,omitempty"` @@ -74,9 +73,6 @@ func (c *ClusterAction) Data() interface{} { if c.ActionDisconnectCluster != nil { return c.ActionDisconnectCluster } - if c.ActionSendAKSInitData != nil { - return c.ActionSendAKSInitData - } if c.ActionCheckNodeDeleted != nil { return c.ActionCheckNodeDeleted } @@ -189,8 +185,6 @@ type ActionCreateEvent struct { type ActionDisconnectCluster struct{} -type ActionSendAKSInitData struct{} - type ActionCheckNodeDeleted struct { NodeName string `json:"nodeName"` NodeID string `json:"nodeId"` @@ -250,9 +244,3 @@ func (c *ChartSource) Validate() error { } return nil } - -type AKSInitDataRequest struct { - CloudConfigBase64 string `json:"cloudConfigBase64"` - ProtectedSettingsBase64 string `json:"protectedSettingsBase64"` - Architecture string `json:"architecture"` -} diff --git a/internal/controller/controller.go b/internal/controller/controller.go index ff869227..d876e8a8 100644 --- a/internal/controller/controller.go +++ b/internal/controller/controller.go @@ -59,7 +59,6 @@ func NewService( reflect.TypeOf(&castai.ActionChartUninstall{}): actions.NewChartUninstallHandler(log, helmClient), reflect.TypeOf(&castai.ActionChartRollback{}): actions.NewChartRollbackHandler(log, helmClient, cfg.Version), reflect.TypeOf(&castai.ActionDisconnectCluster{}): actions.NewDisconnectClusterHandler(log, clientset), - reflect.TypeOf(&castai.ActionSendAKSInitData{}): actions.NewSendAKSInitDataHandler(log, castaiClient), reflect.TypeOf(&castai.ActionCheckNodeDeleted{}): actions.NewCheckNodeDeletedHandler(log, clientset), reflect.TypeOf(&castai.ActionCheckNodeStatus{}): actions.NewCheckNodeStatusHandler(log, clientset), reflect.TypeOf(&castai.ActionEvictPod{}): actions.NewEvictPodHandler(log, clientset), diff --git a/internal/testdata/aks/CBD209E745FE4FC85066CBA305F32F9A1CFD89A3.prv b/internal/testdata/aks/CBD209E745FE4FC85066CBA305F32F9A1CFD89A3.prv deleted file mode 100644 index c34137fd..00000000 --- a/internal/testdata/aks/CBD209E745FE4FC85066CBA305F32F9A1CFD89A3.prv +++ /dev/null @@ -1,33 +0,0 @@ -Bag Attributes - localKeyID: 01 00 00 00 - Microsoft CSP Name: Microsoft Enhanced Cryptographic Provider v1.0 -Key Attributes - X509v3 Key Usage: 10 ------BEGIN PRIVATE KEY----- -MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDRbdr5Nmn9+Ke3 -ZvtIq01epvHEn6JJYekXNkQSMXmTTOETw96mSD0uxvLI4sfeaa8qxbf0eE93wiPO -q9x0GpFGDNgROC/TBvVwMnnAgQU4GpNPe50CjaZtPcv7YNo3AdpDuIAZOsgf6wAj -waQqo7FuPgVI2mGi3F3/FT3I6Pp6NRIQaOqCmsMEgmuOKMftoHL7+njyWNI+YU+f -rp98B2wOQAnSbKDtjvrKKEktjafQTGhYL0hOe9D9yKYmTn3fakG+cIeKYs/JErmy -n1VYZ+ZjlDruXsjInELoND+Q8NkMlMHkJMkl3OjWxuTlpURwr1d3EM0cQy9NQPUt -U6Jiu8ktAgMBAAECggEAakkCVG/VIttK4r0U0jB9t4eqM0uApRVXojwcF8+cD7F4 -mPtSx7jptA+rr1/IZ4vjJiXp0dwtGG4ilgSKgTHqgE6MaVDGlKZ3cVVsjNHtwCdc -k338lQsmZ1Jxb0Yb+Mar6qp7+FHotqohDAR+OFWS+ovnSq3p1ylXWtmA3bG/TL0v -QaLYXo83PeozOKHAPDZTll09NBBvSV4UpNn4+bJ/vjl8QoJIytuwZgxZ2fejIIpK -4xqEgsvqBMloriz9XWuoiILYDffWb+MA8ZgQ2VPSHFVo7O+o90am5OAO/cPSBKm2 -CHOwyWSS1nABqTOV2WCID1bgxTH+64pq//MA8pNuUQKBgQDlmREU4BxNq3y+ETC/ -k6gI1vCRmy/EQYHDYFBavRjO11OZVn+DYfxk24F1UuaExPuFKdmWMVOU97nPwtn8 -xWF4SKi2Uf3cMmNqEmRd66oIgJ+a/ZtSsbawAGaX61Pra9qXkJV/3OUfEEtu6mFy -OZ31v8aDL+lCkxbo82bLFQkfJwKBgQDpgw6bGLD3mhiqO9CGeUMDzQp98avgcFj1 -jL+a9DrNe/CzI7sHdiviLhlzeH15AI9kFBfA+WjKQfHLF7RUr+6SUWTsNwJ9PiDR -qy7ZHnF8mJtchzAYt+toJRwaYPcrMxgb1urui5UE9PsLYpQ3GV7FYHoZ7LMN55Db -9rM684SJiwKBgQDLP9V/RWXI3CZxm4YsEeqO6LfOLjL66YKWEo0PxpZPhQ7cj1YS -WIu2PRs9YUXwAvEl0QZtjv0Owr4azcNroM/IS4oO3EZ+x5x6Kg3vls/O9w5Thm4Z -pnizFae8lPaVUcUQp02xAztRZHtilNnu5FKRWlPBjohQByYg0lgNL3IDwQKBgEnZ -DqdyGZVUgHRl0j6U3uK215iY81hZb2jIiFgC4Q3XInok1KM5dgtjtNzVwCiiSrbF -u/VlawR78nHeH0OhF/viDd6+TuU43rwwPPKhNBbJVGjgwA8xKxuWkNquy7w3vmof -f9DNB+W3bCVfmawLM/OL3VGRj9bX4vINhQUhukqdAoGADbiSNcrhpnja2r8/ACaY -VR2wTJGWrjCzMwIP4vjgsEn0jauUi+JXeXCnd1Pt5AdUlYHL6MjzBOAsmixIeTq+ -91NXw7sKppSRJ05OYtZ/BVoYNo9ZkW2o2rAuSOU4NHTBMImt0Yjz2eqcsi8Xb48k -aptUOF1XhpbKxUEIR7YA3do= ------END PRIVATE KEY----- diff --git a/internal/testdata/aks/Microsoft.Azure.Extensions.CustomScript-2.1.6/config/1.settings b/internal/testdata/aks/Microsoft.Azure.Extensions.CustomScript-2.1.6/config/1.settings deleted file mode 100644 index 81e75b21..00000000 --- a/internal/testdata/aks/Microsoft.Azure.Extensions.CustomScript-2.1.6/config/1.settings +++ /dev/null @@ -1,11 +0,0 @@ -{ - "runtimeSettings": [ - { - "handlerSettings": { - "publicSettings": {}, - "protectedSettings": "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", - "protectedSettingsCertThumbprint": "CBD209E745FE4FC85066CBA305F32F9A1CFD89A3" - } - } - ] -} diff --git a/internal/testdata/aks/ovf-env.xml b/internal/testdata/aks/ovf-env.xml deleted file mode 100644 index 9538f64a..00000000 --- a/internal/testdata/aks/ovf-env.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - 1.0 - - LinuxProvisioningConfiguration - azureuser - true - - - - 2C45362FFED333F68433639870F8DF19598AD31B - /home/azureuser/.ssh/authorized_keys - - - - aks-agentpool-10667214-vmss000000 - I2Nsb3VkLWNvbmZpZwoKd3JpdGVfZmlsZXM6Ci0gcGF0aDogL29wdC9henVyZS9jb250YWluZXJzL3Byb3Zpc2lvbl9zb3VyY2Uuc2gKICBwZXJtaXNzaW9uczogIjA3NDQiCiAgZW5jb2Rpbmc6IGd6aXAKICBvd25lcjogcm9vdAogIGNvbnRlbnQ6ICEhYmluYXJ5IHwKICAgIEg0c0lBQUFBQUFBQS85eFlmM1BhU0JMOW4wL1JTM1JyZTI4RkRQaG51WlJiZ1Fhc0FpVFZTTExqYzNKVE1neEdaWXlJSkp4a2JiNzcxVWdqSVFIT09zblZWZTZTZjJUMTY1NmUxOTF2UnJ6NXBYN3J6K3UzWGpTdFZEQWgxTDYySFR6c09BTnFPeXB4YUZmVkI4b2hKTGJPd0hRMXFodTZReDE5aUUzWFVZNVNTMWNmWUhxbE9wMkwzSEtjV2k3TWdVYXYxSUZ1dU8vVUhqWWM1U1ExRUR6QXFvMTNBRTVUZ0dvNVZEZHNSeDBNOHFCbnFVa3pPMzFNdHF6TlJzbXNtVmZHd0ZTMXRSMlY3SDE4dlFQVExHRjRFaHlYbTFzbGM0R2pwaUJwYUxhdkU3ZUJicTk1YWdxaWhqYnRXYjBYbGo0dVJOamFtNkN0WXhxT3FodVlhTnVRMHhjaFNYME0wNkZkMHpVMHBTV1F4RFU2MjJFRXlmMVRtd01NM2VqbHRsWmpiZHZLdnlYbzdidHR6QnVvc0o0Z1ZSLzJkcmkxMW00RDdCUTViUjJXNnozc1Vjc3RwTm82MnRweHg5bUZPOTdHRVozbnVBM05lRGIwN1ZRUFVWNUZpNWdhMVhCN0I2aTVEYkw2UGFwcW1waW1GaFJuclZDbHhIcWFkWUZtRWJPTnhWdFJGTk4xMnB4U3ZoVWpOUjBWYXFKYU9yVXh1Y1NrQ0VBN0FacGgwNEZwOWwxTHdKbzdZZW8vWFlLM3dWblJWRWZkM2MzSGpRSmljNHlPVWNHNDJZREh6YTFxYlVVL0VkRTdydTJZUTJwamxYUXVxR1lPVmQydzB4UlBCYVJudVZRaitpVW1kckczVGcrM3padVpuQjRWTVBoUzcyQnFEZHllYnBRQ0hhOUJ1dEUxS1RHSHRHTVM0bG9PMXBSVDBWQjI3OTJMNjV3MXRqR0ZGYzdRV2hFMVZSK3NlVHdyYUtWcmFhcUQxeWJSTVIwYjh6NjgxRzNkTktqZElicmxKS05Kc0txdEk2RkdvN0FJbHk3WDZoRlZ3d1ZFSVEzTEpUM1JtcWdoNm1WZjIzeWtDT2FWVWxCRHRFaEh0NmxxMjNyUG9NUTBIV3BkS1FpaExWc2lVUlltUTkzbW1Tb0lpYkNXbWd4L3g3U3VFNUNDVURHeVpRMnVxYVhhOXBWSmtySG82ajBGb1NNb2pWaXUxNlpvWUlReVRVaUZZS3ZERURvcEFVd0xFOVhoSEdKQ1RLSWdsTW10UTNZWXo4U01YMTVvbStxTHNxT0MyOXF1UHRBeUwzNUtwRzdwMU5tTzJ1blRIbmFvU29iVU1mdllVRkIyeW0xQ0RPeGNtYVF2S0hEVGZCU1VIWHFiY050dEc5aWhGc0ZkL1oyQytMbVhNbmFsV3JSRHNDcWFEMldhWHpEb2h1MTJ1M3BIeDBiU0xIMXFXMm9ISzRnZkFRbll3UU5zbWNRcGpDNG1SRUdaV0szdDJTeWs1c3ovd25FczNyYnZybWxINVZ1NnhNUlJVQ1lxWlhQYStRbzZ6cncxM1c2ckEweDF5MUhiQTJ3cmlPdEZxampFdFIxK3pHd1gvSVM3bTdZaTdVZEJHSU1jUXAzRm8vcHZjc2hteklzWVBNT2Q5K2tlOWg2OGVEVGRseHEvUS8xZis3cEdCM29mSy91aklHUkJkUENzYThwKzdiZURBNm4rTzNnSDhBU0wwSi9IRUFmTHhZS0YrOTVOOHdONE42MFBCK2ZBUHZzeHJQWU9LbTdiTlJ5WG1qWTExQ0ZXcXVuZjFjcFFKVndBMXdieG9sb1JoNnhTWDBaaGZSYU12Rmx5a2J0ZjNySlJQS3VrL1o1YStmdHhNTHBuWVlWOVh2Q3RKWHAycVJ5ZU5HcEhKN1ZHcy9RZTIwNHg2dnpSSC90ZXhialVOVjNONW9nckZPK3VacTFSYTFVMlhxSWFhdFdRakRLZlhNZjVkWUt6WFhKdmJJUk9PdXVka2lhTVRtdU5zMXBUUnBWS3lPTHd5K2hoVFAwSm5YaitiQm15L1FONHFnQUFjSnZQSWtWQzUvREo4Mk1helJoYktGTHpIR0wvZ1FYTFdKRmE1eEJOL1VrTXYvNjY4WkNFbUFRaCtPRFBRZHFQMkVkQUlJbWdCK2N3RGhJSS95ZkNnWlEvUFAyeDRwRnVRK2Jkdy9NenZNK3gvZ1J1UVBKQlpoL3phUERoSE9JcG0rY2cvbytOcGdIZ3oyeTBqTmtZM2xlbFA5NVh1U05mSXpvdlFVTVdMOE01b1B3bG0wV3NoRWkyRHRLYWh0dzY4WlBIY1RCUFBmNWkyZFV1eXVrOG9GSHN4ZEgvQy9mL0tVSUxiTjJ4bU1aZWVPdk5aamxMc1JmU3J6R1Z3aE9tbHVGTWtRN1hGYXBLVHdYdlZVWjQ5UVhxQ3RnTityd1E1UGpQU1FMaHE3Mkd1a0swNzZRdks5WnhBMGJMY0FieUpMSUhJQ1dQUVo3TGp6SE9BOU9KUDFzclF2TG1sYTNKSFJkZVBGV2tROEgrVVluOVlxeS9wTDhJTHZOL2N3UHlCS1JzTmZqd0lTL0FidTZMb1g2US9IeGtkcFVneStpN2FwQUFKa0ZZcHY4cnpLL1piaVhRaGZmSXhrbzlXTVIxNzg5bHlPcWpXYkFjeS83Y2oyV09qV29KSXNIZWhXd0JjdmNqcjBvV1oxVUZLVUZ3TmdVampXK1JsVHpvM2h0c2R2Y0tGZnA2ZWY0YnFwSWcyUmhrSDZwMW5sNTlYTjBvV05LbDY1emZ2aFYwVkZhVjZFc1VzNGRSekxzb2lyMHcvamJSaHVoeE5QY2VXS1pHM3l2VGVSb3c5dGhETU9mM3FjQWJ2OFpCNUEyU1NPWG5VZnMxdDFFY0xQN25pT1ZKLzlTc2p2M0l1MzJkb3Z4VXhJcThmMDV1VXluZ1cvazJYbitVVEU2TUxLY2svVHlFUExJdzhvTTV2WXV6Tm90WkZFTlYyaysrMkNhdzk3Zm8vWHdQcXRJZlZYZ0c4VkY0Q2M4d1pkNFk1RG1nZ3lvb0NsUWxWSzJzS3V2dXhYUGVBK3A4YkpkVWQwdVBBVFVhY0FTdEJranBmZ2hPZi9heEhkVnhiVVg2UjlrUCtOVjdHWUdFUUpibmdienc3bGdJOGd6ZVF2M1I0MTlzZCtJUWxaQ2NZbXV6NEs2eUpyaThBTWh6Qm8wdG1zWEZCOEVvV003R01BOWl1R1dRWk16RzFjck9TZ2hxL1FuOEFqdStHd0ExK1U2YlI0WE5zSGs2S2VoVnk2Zm9NZHgrV1lkNE9aZGlOYlIwSkpOeUZLVGFueFJ5bWZsUkxDL25maHlCTEUrV005NnYvSXI4TEs0SC9NcUJhaEVMSC8wUnEyNGtYRDRMSU51cGhIaUx2MFJtc0ZnVXlkeFN2bGVGRVZnUko5MzNtNHlNT0Z3eXZrc1AzaXB3QzVXSVBUeXlzQk04TEx6Q3Q3UDRGcWVxSXUybmR3a0V6ekJheGlDUG9mcjNLciswb29NU3RKMURteTlCYjI3NEhTMlB2Ukp6a3I5cHI2cmlBbHk2c3ZFWlkrTThmQ0VBRkgzaEdlSVE5dmgvUHFEWmJGNUN1dmpVdjV1eUtMNU01MXVSOXZXdXJlVFgrWFNOVlRWUFhVcUN5SlBtVjFLWG5zcEJWN3V5ejV0d1ZSa0huK1pjWnpWMmE5M2ZPVUczZUR1MityMzA1eHd4OWZ6djdDY1JxWm0vMG5TQ080NUpyak1GZnJnZit5SElDNUJLNXNUMkJxSXBtODFHVXphNno5cENzVHROZEp3ZWhZdGxOQjJEOUZUeVhPVkh3TmE0OHVZN2JqVEFXOFR5SFlzaDI1QUl3ZE5mS2VtelNIMzEyK3NTQ1JiOGJ2cm1BZzhzVEd4c2Rpdi9EZ0FBLy8rWkU5SmJoUndBQUE9PQoKCgotIHBhdGg6IC9vcHQvYXp1cmUvY29udGFpbmVycy9wcm92aXNpb25fc291cmNlX2Rpc3Ryby5zaAogIHBlcm1pc3Npb25zOiAiMDc0NCIKICBlbmNvZGluZzogZ3ppcAogIG93bmVyOiByb290CiAgY29udGVudDogISFiaW5hcnkgfAogICAgSDRzSUFBQUFBQUFBLzl5V1VXL2JOaERIMy9VcHJpcVIya1VaeFNteWh4anU2c0xLRmlCSWhyUkZCaVNaUUVzbmliQk1xaVFWSjRqOTNRZlNpbXpIOXVKc0Q4T1dwNGo4ODh6NzM0ODh2bjBURExrSWhrem5ub2R4THNIL0tpc1ZjNUZCckRIS3NTaFI2U2poMmlpNXIzTklwWUx2dzBxWXl2YzhqNVZtek5Ub3FuL0dSWFhmejFDWVZoc2VQUUFBRjQ2MEVtYXcvWUcwY3FtTllHTnNmd0J0bURMOTlhWGdrNDd2MWs0WU4xRXFWY1JLRXhVeUhtazNyTkNvaDNpY1JEeU5Vc2FMU2lGMERnL2dDQTZQZ0pXRzJvaEFPakJoaFkzS1hOVHBGRzdjY3A3QzliWDdFZWoxd005bGtmaHdlOXNGazZOd0NyZnZlMjZBaEplWDBhOFhaNFBvcW45MmV2Nzk5LzR2NGZtM2VWN0ZzemlWZURIU1pYZ1c5citHV3lLbS9BWERVQ1JiN1pwNTNycGJUUkVtT1M4UTBrcWpndUNPcWFEZ3d5QXBSMWxnZFlzaFZwcWc0TnJvcGZHWXhUbTZHYWJpbk45aFBma3BTUEF1RUZWUndPR252VTRYRXJsSTJlYnc3b3B4WXhHeXNDZ3NrR2tFbWRvS2dkdmV1MGF2QzhRU1BycnZSQXIwWnBhcEtFTVRWYVYxb3NuRTFwNmo3blVPM0tkVnpSV1JyRXhabVY1Z3hxWGRMYzNRMFBuVXZxek0zR0dwZ0FNWFFGb2FmMEFIU0IydXZiTDdMZGpOYTFsS1pXQVFmam50bjBjbmx4Zm4zOEx6UVU5SXdZVkJ4V0xENzdCUlc0ZUIwbGlLbEdlV1VzcUEwbFNxR04xZ2dtbWpyYmNNTkFYNkFGeG93NHFpbVgwRHJTZkJQQ2ZuT1V6QklBSlpjd0dta0Nrc2dZYmcvOUc2dmdwdmovZmZ0NmV0YXd4dmxkcC8zeVorRy9iMjZnTmgvMkptTnNYWjI0T2hRalphbko3dDRtYmFIZ3dnSENqK2FCeUc1NmVpTG1hbEJIUVc5aFlhYXhpT21zSDZYRGd1R3JqQ2U0d3Jnd2s4czRWd01IeU1ldHY5c1FDcnRuaU5MTkxwemhlNmZmVElZZGRGbEpYcGtZOWQwRGxQblMrci8veG4rS3JUQmlwaFVJNnk0K09MMG5BcDlQRnh6MTllNis0eVNvV2s5UXFxTUpiak1ZcEVXMExKNCtmWkZqeitXZjFYRkhNV3lLSWVLN09yZDhRcmdXbU0ySjdqalU4KzMvZ05VOTJYb1NvcmxhMWZWdjl6cEZ6U093TDE3NE96R3gxMVRuK0hBZnRLaXFveVV5eDVRbUdsYTFuZHNtWmo1N0lDV2d2cS9yVURDbHN3MkIyQlhjdS92VnMxN3krZHk0bDlFYm5ScGY2MW5KbGQvTHlSYmJEbWRlMnM2VTZiSXEyRDkxZHliMGNxVjNoY2EyS091SnEzemJTdGVMTFV3alp5VnJzOXdPRnZMQjZ4REUrVUhKL3dZbkh2RE1JdjBjbnBXZGdqblZlL28rMHorcWVEZzBXRkgyeVJueTVMOHZnVWV3YVVzcUtRRTVySWlYQTcxMHZQYS9JelVJRndzUDRjWHZFcTVkN01leHRlbkhoL0JnQUEvLy9ZWlFvVGhBd0FBQT09CgoKLSBwYXRoOiAvb3B0L2F6dXJlL2NvbnRhaW5lcnMvcHJvdmlzaW9uX3N0YXJ0LnNoCiAgcGVybWlzc2lvbnM6ICIwNzQ0IgogIGVuY29kaW5nOiBnemlwCiAgb3duZXI6IHJvb3QKICBjb250ZW50OiAhIWJpbmFyeSB8CiAgICBINHNJQUFBQUFBQUEvN1NVYjIrYlBoREhuL01xVHBaL3Z3WU5sMjU3RmltZDBzU0tzalRKRkVCcXBVbkloUk5oSlpqNVRKditlKzlUL3F4cDB3eHQwc1lqOEgzUDMvUDVjL1FDR1FkaGR4YUd3N0hzOEZhcUxMcU9mNVdYL3BXaU9maTZzcjY2cnczNmlTNnR5a3MwNUZkRzMrU1U2L0tZNW5CNkN2Nk5NbjZoczUvS29pYUxSdXhraGM3Z3crbi83eDE1TVF6ajNyUXZPL3lUUTNka2NaSFlBb1FvdGFoVWhnWkVBV1NWclFtdTZ5c3MwUDZPZ1VnSWhhNXRWZHVkMXpRS3YwUmhoN2ZtcUZJUUNYdzhPVGtCOW9kN01kY1p5ZGxFbnIvcTA2NTBtdXRiRUJXTTBKUlloUGtDeWFwRkJZOUFtSUpBQUViK1hyRGoreG1EeDBld3BrYlhHVVF5Q09QdVFFN0NKcE5iVmVSbHZWUVpsdmFZME56a0NhNmM1UktUc2NyTHdDcGpEeFRBeUQ4czJTdGpGSjNKYzdrdElUNWN3L1pPL29WOWNCbUVjdHlQZzJnODdzNHVuNzFUb1VwVjNOM2pUaW92WkM4S2g5TkozSTltM2RWTGg3Y3dtV3ZncmRZR1luajNIN2tnWVBzbFVtRDhGZXhzclhCZDEzRStCOU5KSElTejRXVFE0UzM0OWgxRUNWOGRlUE1Jb1V3R21BRGp6eUN6QnFXdWdQRU5oazB5Tk1BYTQrbmFjUC9NVFNuWEJJenZjOXVVa0JDKzdkQ3Y1WmtDeGc5eTI1UkZxNnIyN3JueEZOcy9BT052MlR5Y2QvUWdsN250NlJUYndESHhZTG9lNURad1hYa2dqZEZtRlREZUd0dCtiWlROZGJsYVNyM3RDRDlEMmdaK1RSNzBBdmx5S1NIMFlGQWoyZTVxRUYrR011VkJzR0UycUJjTFplN2F3SWs4T05QYTlwVlZsYzVMUzIxNCtDdFdvMDEzWG0yeWJkalQweEc0em1ZaVh0RHQ0REszc0dQM1J3QUFBUC8vaWo5cnIvNEZBQUE9CgotIHBhdGg6IC9vcHQvYXp1cmUvY29udGFpbmVycy9wcm92aXNpb24uc2gKICBwZXJtaXNzaW9uczogIjA3NDQiCiAgZW5jb2Rpbmc6IGd6aXAKICBvd25lcjogcm9vdAogIGNvbnRlbnQ6ICEhYmluYXJ5IHwKICAgIEg0c0lBQUFBQUFBQS82eFlmWFBhT0JQLzM1OWl6MkhTbHlrWUoyM2FYb2ZlME9BMFBLV1F4MEJ2NXJucmVJUzBCazJNNU9xRmhPdjF1ejhqMjRDVGNHM2FLMzhrbHJXNyt1Mzd5Z2UvQkRNdWdoblJDeStLNCtTc1A0aVMzN3VUMC9OazBuOGZqYWFUemdsNEdnMDByejJld2gvUVRDR1F1UW5JWDFaaFFLVXdoQXRVT3NpVlhISE5wV2hSdWN3ek5BZ2ZYNEZab1BDZytDRmRTUEM3bVVMQzFxQ0lBQ05CVzBwUmE4QnJicmlZdDFvdGYwTit6UTIwdlpSNzN2VE5kRGlaSm5FMGlMcmpxTk40bU9sWm9qQkRvaEdhQ3ByNlVRSHVEMmg4dmtuN0JUb2Q4TU9UVnZ1cER4L3JlTFJsRWtodW1uT24zQnFJTlZMaFVxNFE2RUpKc2ZhMm1CdS83VGowV2h0Y1VwT0JRbTJJTXRVYjFqUjhpWG90S0NzZ2w0d1BHVEg0NkVuajRVSnFJOGdTSHoyQmdvdGFiZVJTVThWejgvcDFZZENsNTZWU0FRY3VvUEZRNHljSTRmaWszWDcwQ3Bnc0FKVDIxOSt5ZjZLbFZSUmJlbkhMQVFCemhUazB6ejdCZzRQemFIQVJ4ZU5vZFBiZ093UWVIc0pNSWJrc0pLWjhCNnZCb1ltZkNzQjNUaTA4MmRnZlhxV1ZNNDFiYXAwaDVoQnVUbUJTb0tlUlFaT0RIOVJnQjh5L1AzQ3ZmUG9PQnUrS2NKT2tVaVVwejdCVUxMd25mOEs0TmtvNmcvMzk5OWZWL3k1Y083ay9DSThMYlVpVzZaK0lyQ2J5WDRMNitWYTdLL2tISVZJcFVqNy9tV2JiU2ZTcTB1VTNQcis5bUNiRFVTLzY0c012SGZDTnNuaXJhdEVNaVpqbWJ5K21QY1ZYcUhSUmJCalhaSlpoK0tMOWRGeFdveGkxekZiSXZGM1JYaEVWS0NzQ2hUTXBUVlBoSjhzVnNodlpHa2R2UnFOSkhQMTMybytqWHNjQjhMYkplV3N6Slc3REhWL3FZaFYyMlpLTHFVYmxIVUEvQmFxNEs1UnpOQm9xVnlBckRnT3JFYmdCb3QzU0VRTE5lRUdFaElGTWdSb25wSkxBTlFocGdMaTE0WlJrNEZxTUZDZ01hQW5Pd0Z4WWhDdHVGakNUVWh0RjhweUx1YXRON29EcWRFZ0p6N1IzQUtlRGZqSVpqUVpPOG13TkRGTmlNd091enhrSlBqWEs5eXFlMHhMQzRlR1dxZU9Yc0h6UCszRGVTd2FqdCtNaUVDNjZrL05PemUrckJXdFdRcll0Y2V1T3hoM1dHNDRvZXlWRGc5UWdnN25NR0FyZ1N6Skh5QlZ1NVByMW9EamR4Rm5ma2VsaTYydzZHQ1Q5NFhqU0hReVNXNjdiT25ZYmYvMXg4dUc4OThXSERqalgzd3k5SGF5cGRxYjljTjZETXE5Z1pnMFU2YlJISytlNFZGckIvRDM5d0pFWE9UUWNUWkt6MFhUWXF6ZVcvZUNMb0hSaFYzWDgwZGoxK0ViVjkwZmpaTmg5SDhISGo4NWxUcXU5VXB5S20veXE2VmladFllNTNwbW5WUHB0elFXdlFGL3lNc0FZNWlnWUNzcHhHK1RFY0NuOEVtTVZSQnZYeEZhNE9jRnpJNVhOVDRmOUhsZDZTelpFY3lYVjVVVm01MXhzMzc2ek04elF1SC9VWkYzQjNOT0ZrdGRyejBPaHJjTDQ0dFR6cUVKaTBPMjlKNEtucUUyUHExcHl2bnVoZDR2VFlkL3pOdXhiZEF3MnI5NUx3WTFVWTFRclR0RTdnS1hWQnBRVk1NTlVLb1RMRWxRNXpXaVhOV1FsT1FORnFFczMyQlk5UjJHc0Jsc0V6WldTTGl1ZEViMERXQmlUNjErRFlNN053czVja2dST3JoSm9VTmNmdWRZV2RmQXNiSWZQWFZrZ0FxcFo3Y3BWazVSZkkvT0tOTEI1akliTTU4aXFMS2dVR3E4MU5WbTErSSswU3BETnFySnZ0UnJLbnMxSDRrTEpKZGZVdmxHY3piRUl0djJSVkkrZXJ3ZmtyVnk2bVZSSGpJVVV3K2ZOOXZPWDJIemFQcWJOMmZHem95WUpYeDZGaUVmdDU0andHZ0s5MXNITTZtQzFkSDlaMlFTQ3hTcXhobWVCRlRNdTJHNlVxc2FtOEpqLytkTlArVlA0RUtDaGdhS3RURktTYlZJMzVaNWFGaTNIN1JKWEQzUFRjcUhYWXNITGx6a3FMaG1uMzB6Z21yMUlicEk1bWlTM2FvNXcxSWJqTm9SSGJTQTVvUXM4YWpwWUdnNkxsUHZRSGZSNzNVbC9ORXlpT082MHZlNUZQeGxIOFljb1RuckRjUkpIazdnZmpUdGh1NzFCVUtNb3p1NTA0SEVyVjN4RkRHWmNYTFllMStIOGc3eWpkbkZaaWFOeHAvRlFvVkZydW1RSlR4UFhkS3hDYUh6ZXova0ZRZ2piSUhRbTVhWE5iOUk1UEY4ZWVlUEp1TlA0YllOM1BCbTdBYUY5MDBpdXNIeE5TajFHNDZndyttTS9QSG5ST2psdWhVY3ZXK0dKL3hqdXh1a3RleFoxKzkyTGNWSVQzLzNmTkk0S2xRYWowYnZwUlhMVzdRL3VUdmIza0xSUFJzcDN0YmhHZWpvYURyZkdmOWF1YS9kOS9peC8veVRaaFVtdEozM1RzWFhtaldjcE5GZC83ZkVJUEgxNjdBYkswblBmb3JxSCtZckRDOE5WRGJKeGMyaTdQV0U4S0lkQjJBeURUNkI4NFVxMWtLeW81Q0VzdWJBR0h4UnMyODhGMEtUZzY0VTFURjRKZHdrUDRkRC9nVEpJY3JNazZ2TDM3b0FMZTkyZHU1bk9pb1hNR0J6ZWNmLzNpUTZzVmtIR1o5c2FWRjNWVzR6d2JGMkp2eStHN2FYZVB5M3U3bEJlM2lIbGd1c0ZzcGFMSU5Db1ZxaGM5eE5JM1JnQWRJSDBFcWhrK0tzUGpacysvTXBYQWhSczd6ZUM1U1hqQ3ByNS9ndUdtM21NdEhSeDcyODBYcTZCMk92MDZzclYvUjNUbHJLWjYxWW01M0RvZWVYY2Rrc0Y3eUFhblhuL0R3QUEvLzlrUEV2ZVNCSUFBQT09CgotIHBhdGg6IC9vcHQvYXp1cmUvY29udGFpbmVycy9wcm92aXNpb25faW5zdGFsbHMuc2gKICBwZXJtaXNzaW9uczogIjA3NDQiCiAgZW5jb2Rpbmc6IGd6aXAKICBvd25lcjogcm9vdAogIGNvbnRlbnQ6ICEhYmluYXJ5IHwKICAgIEg0c0lBQUFBQUFBQS8rUmFlM1BiTmhML1g1OWlTK3Y4cWluYXpxWE51VlZ1SEZsSk5GWWxEeTJsMTB0N0dvaUVKSXdvZ0FPQXNoMWI5OWx2d0NmNGt1MmtqOHljTytNNnhHSjNzZnZENG9jbGQ3Nnhwb1JhVXlRV2pVYW5NN251Mmg5Nm5lNmtONWlNZnJwcVc4eVhGdm9VY0d3NWpFcEVLT2JDY2h6VDUrejJyaVV3WHhNSHR3Z041dzQ3bDkzUlU2Y3laNGxsT0hQUW0zU0dnN2U5ZDVPTG50MDJMQ3dkeTZIRW9saTJYQ01jZjlNYnhJTktxeHFjRWhvTlhReC9IdlNINXhmWEJRR1gzVkNQSVZjWWpZN2Q2NHo2cWFRdXlJa2p2UXJaekdBZ3VPVXhCM214eWVGZ2RONGJkTzJMYXN2SlVsMWRxVDBlZENyRmVVQWRYZkR5MVhXbDNES1lZazZ4eEVLWEhyOFpEMGJqaWQzdGQ4K3Z1KzNtdmllbUU0NDlqQVFHazRNcERocWpicjk3TmJSSEY1T3IvdmlkV2xVNUNoSjcyR2RjNW53dVRhd055YVU5dmg3MXU2UEpoNjU5M1JzTzJzYjZ1SFhjT2pFYURjZkRpQVorSjQzS2hmZVdlRmpzSDhCOUF3Q0FyOERrTTJqV2hiV3hhVFFJRlJKNVhxckVEcWdrSzV6cUNIK3BIK3dzR0JpRVFzME1NT0Z5L0tackQ3cWo3blhpTGJTaGVWOSt2REZTdFdRR0FxL1dtSGZZeWtjY1Y4dURjZEk2UFcwZEd6K0FYR0NhemxZLzJ1clNHSjIwWHJaZUduVmlWK2VqenZ0TStFVmVNRjdmdFVUVVJSNmpPQXN3Tk8vTDFqWmc1QjdudEcveXVwOFF4THlCSklZVlpqUE4yQlA0eTVid0p6ZzVJeEdlTXN3TnNMeGhmSG5sQlhOQ1U4Q1JHWHo4cUVJNjZJNStIdHFYOFE3WkdOQUdJeXg1QnZ6Mld3RUhzY1p6TmR3WjlCcWF3V1FSOGROMFR4U3JHK3dxMTVJOTJobjBVbzlXUzVkd01QMktTZUc0ZWpwNjkrK3dNRGZ2MWI4aWw2OG5ZN3UvczNOb2JXQUh4Z0tET2doZ0doQlBFZ283T3lBWmNMeGlhd3pJODhCWklDNWczemcwRGlEdzFhQmNZSmdSaWp3d3JDaVFIRXQrNTZ6Y3lSekxpVVI4cWlhZW5CN0RTekRLM2xtUk43RnZHd05LM20zZzRRSHdMWkhRN05yMlJOY3dHZlYrNmc3SEl6MHFsendRMHNNeURVMVlxR0FaUDU0RTNHc2JDeWw5Y1daWnlCSG1pbkRPZUN0TUczYm51RVd4dEJKeDh3Yk5pZFc4TDVhNGplVVJHdHhhYU9WKzkvZTh0RkZsZFVZODdDTzVLQmJQcXFrS1hmQU5tRE13bWlVRkJoUnhsY2FiekNZelJMeUFZM2lob3YzZE1UZ0I5OENjWGZmQlpOWGF0SWNCOTR4OHJOTlZsd0tlR0hjV0srYkM5eTlmVm10UGl2T002Q2xLdHNCbm92ZkRvRHVhZk4wUXJuTHhtVGp1aE13a0RWRk1TNUlEb1hsU0RGeVo0dWp6MHVkanUvOEUrRHVjbUpJeFQxanI1bjNlOUViQkZuR0NSVXllekxLSUdXNE9NOXdjTFlsNGEvN0owTDBKUTlXTlNsSFp2ekNYK1R3b0hJZXdncE1ZMlViVmlxMVVYMkloS2lobEd4dWRWK1FqN1FTY1l5by9ZQzRJbyszbWZyUk1NTTExOUFoT1gxc3VYbHMwOER4NEFJRmQyRXVDQVltTVpjMzNEclJLVU14ZkJZUDRXK3R3MHpyV0Rwam1mZDZYRGJUL0M2VmdsMCthNkhCTVBDbHJZVE9JdlVVZXg4aTlTdzRnN0xaQUxJbnZFenFIWEhUVUhJbjRIRXZJOUJZY2lWS2NPK2gzUUM2SUFDS0FVZThPbk5BR3VBRlhCaHlCVy9EaC9ZVUFzV0NCNThJQ3JYSGlXUUl5OERrMkhlUXNzQXVDQVdWQU1YYlZ0azAyU2t1elJtYmhibDR2WEhBWkZrQ1p6R2xWeXFab2lkMGpoYTJBVThDSWUzZXBoaUkramVkRFBFdGZYTUtmaXROU0duVXFVTUx3UmMrdVlrUmF0T0lscXhETVdFRGRzNXJVNXRsZkhKYVRJaWZLVEl5cGo1eGxtTURJQXFHU1pSN0d0d1NOVlVuRTRkUHQram14TUR0bGhSVm5Uak12RXU5Qm5WbHRqOSttMFJCWUJuNW4wTHNnWE5TY1I3SDJxRGdzMkEwRjB3Yk9tRHhUdjZwa2xIK21IYnVvalZZb3p5NitXL1dYeExJUTVFZTFzcVlkc0g4aS9jdGovOUd6c29SNmpkM3FpVlFnTW04L1BVMnBnbzhlOXl3b0plcnhaMU9MM3lzOFZkZUlMNDBSdnBVY09mSXltT0kzY2ZsTjQzVDU2cnBJUHRRSnBxYWYyNytFdEtKNVdnVDRmYW1kc1VtVlpVRXY2S2s0L3F0b1dFbTFGWm5UYVZoQmM0R0I2UnB5eERhTW95azVvbUxHK0twdGlJZlc0Y091R1JsSVRvQUhBMHhUTE5oTkpvbGRrNklWRmlvTFliMTczTWxmMDh5YXBwQ2MrS2JEVmo2am1FclJmcUd5bEw4d2dOWUpvc3pGMFNVaW1HSVB5OXF4cENpcWF2Z2t0elEwdkwvek1WZEtzaTNUNzAxR3cyRS93VUY4cjFtd0ZiWVdpYlNaZHBLc0xkMFZQOUN1N3IwVm1tTm9KdXFoZWYvK2w2dXVIU1l4cEd3NWNCbk44SXFSdTQ4blV3MW90OEZ3SksrNmhzL0FrU3EvWWFaODVHQll2aEl0d29BSEZFeFR4Y2hjc1lCS2tIYytiazhKZFk4RWQ5cWh2U05YeVBndjVrdkNxQWdGenZoTnlWMklBemhDWWdscGt4Vk1Cd3pITDJUVnVvOVRlQlNuYXdQUjhpb293V29kcnoxSnV3R2xTMlUwWUQ3UzF5cHJVM1NnVXBzaVFZOW9LM1Y0dm9vd3A0QUVEUzl4elN6elZUSURsemxMekhVdk1aWDh6bWVFU2pBTU1OZVJwclB3ZDltZC84ZE1sMkwyN0JodFM1T2VMU2ZaK05tTXp3cEtGb3hIOUd3SlI4WXFMaU9EbDVIOE9YWFZYMWVjM2Q0VldvYlJ1ZjhzTStVS3RqTWFYZ3pQRXVLaEtJYkRxRXZVTmdGbmdaMGxNRm84bklGUkI0TjlwVGdLbldOMUk0dmZFN2c2K1BmM20vc2h5Ni91Y0QrQUUwZ3dYYU5sZ0RrN1BZRFhiVGo1L3VBQWRuZmhJNWdValBLWlcyNVloUkFxVTQwYW0yV05XM3JLeVRtUU5Ia245bmlnVHZiNFFFZzd6RFczTGMyejlOaUx6cEc4ODBXNzFmT2lYWkdmcXQybUNzaFdpSHdXanV2RWpXM3F0dUNzUnR6UUxoem8yOXRpT1V1b1IvVmsvUTVXczdqRG1xbHFvSTVTd0c0ajY1Um1zTHV5aC8rcUE5Mk8waEMrZVZUWVJ5RHVoTVFyUUs3TEtNZ0ZrdXF4U3h5SkpIWmhlcWYybE9UTUE5OURGSU5nUUdUY3A2QjdFcVllYzVhZ1NCYjRuSzJKSUl3U09rL05WUkdiKzRTZUpLRE8vSVZkclUxYW5sdEx2VEtnOTM0NmY5ZE5hRGhrL1lEQTg5UlZYVlVKa3JoUm5yU0JRQ2d4elVjajE0aktYSzluVmxXTjZPK080VVJSOXVNNk5oQTVwZHpVM2dGbWppbkd2aCt2UlpJVmRvRUZFcEpWYlYzUm1pQUlIZDNkMWR1dTJmdWZ6a2pKdjV0Y2pmdjloUC9EUVV3S2FoWWVkVXlldmZhNCsvUkhyVEwycW5haFVlK2pkcTFhTmR1K2p2aWMvNlBXRVJmTS9Eb3VocDNMYm0yaW9oM0RzVVR6TDk4eWRuZDAvazUvL0VMYlNhRU50WXdaWjZ1NlZZU05zSUthMzJWdmJkMDlFczJyMDlFc3VQSjUyRTdhZko5bFM4TldqSjdQMFpPa1dUR2VMOC96N3haNHZxcGN3eGVGbWEvSU5xVjE4ZHptU2hTOThGT01zUjlHVFJUZWprYXQvWEFvaVIrKzlSbVgra2lrSzZCT3hEU2pMenNpZFhhUXZSd0gvWXVNOUUxNWh2M3RVUWduaFRvbmtrMWNSUkZ3OWc0bUdvRUhRRGRMMkx2M3VicVVOVStNTTZONXV0bURCNWh6N0lPNTdpYVVvTUJ5bWcrVmoxc2ZqODEvL1BadHphaFovWGhpSlBhYTkxcVVGRXVXSFBiVWY3L1MrQjFRS1hkMXk5eUNOZ0VlRWJLMDlxOTkyUnJqVGYrSVFLZHEvTVJoTG00My8xa0FURE1kZzIvYWNGd05rK2lNU0NXMVFLZW9LNFo0WXloOVJnM3Vva0pmT2VzQmJoYkV3OEF4Y3FOMC9BQXVLMTBDU2crcVNsYUJDWWJhTnR0VnVZemlZa1EzK2pZMVo2VU5tVytoYXVkNStBcjE1UFFZa2h0NGFXWldMZExyVEtGc1JKZkVmUmRKZkhEVTNGOHdJUlZxRDQ2Z2VtSjBpZEFyRUJqWnpmc1JsWmk2bldxdG1hUHBqZnZKamdxSnVPeFV6cTd5TnJ5QmhCZUlwN3RiVkx0SlA0aXpGWnVZWTdmZ2JRemNzTGwvRlV3OTRuUThGcmdSYXFPVy80SlFGRDhzZ2ZpdkxidDcvMWs1dklVK3FhTGxVR3Z2THl1RVQzV2txalI5UGFWakI1QjNnKzRFQkFJckduSUVlSTFwMkwrT3N5SzA5L1lWMDJPeEcrSjVTYlBvOEx6ZlB3U09aNWhqNm1DaENDdUNPUWtWSzlkNkY3Qi8vZjc4NEVnNTdTemllVXFPd1Nwd0ZtVTdsUlV1SWxPZlg5dHlFSWxpbTc2OFRyczRTZDJDR2VOUTNCeGw0cE4zTWR0ek8ySGZzcnBzQWFJdVZGY1k1VWY4WVVYOEFVRmNpc3RucGo2YWJNaEM4YTZvMHlXSmNweXJUb0NrWWxXUFZaWGxrbEJWTmN5ZEZlVTQ3VllKRlNPMlc1VU5OL2Nwc1AzSXA4QnNqVGtuTG82L3krd3dPaVB6N0E0UXZRZC8yK3Qzcjg1SDc1TlB5UlVnb3Q4dFp6WnZ1ZGFyNDBuNHZkT0VZc1VkbEE0MUVvRkdzc0JaUkJjOFhWbUVZZ2RKK1BGSDZBN2Z3dXZYVlVJdWtraXdnRHY0TEp3UTR2SXN4VEx5ZmU5T21WWGV4NmJQWUlZVTNydkR0NDFOWTBmOTczOEJBQUQvLzd4MklRcVdMd0FBCgoKLSBwYXRoOiAvb3B0L2F6dXJlL2NvbnRhaW5lcnMvcHJvdmlzaW9uX2luc3RhbGxzX2Rpc3Ryby5zaAogIHBlcm1pc3Npb25zOiAiMDc0NCIKICBlbmNvZGluZzogZ3ppcAogIG93bmVyOiByb290CiAgY29udGVudDogISFiaW5hcnkgfAogICAgSDRzSUFBQUFBQUFBLzh4YSsyL2J0cmYvM1gvRm1XcWdTVHRLZHBMbGJpMDh3SW1kMUdoZThDUHJzRHNJdEVUSm5DVlNJNms4bXZqKzdSZWtIcFpzWlduYVl0L3ZNTVMxU0o0WHorTnpqdnpxQjJkT21UUEhjdEZxRVcvQndacndWSGlVaGVCSjRsSW1GWTRpMTZkU0NXN0xCUVJjd0d5ZU1wVmFyWllnTWI4aDUzeCt2N01MRHkwQWdGdE1sUnR3NGVKRXVSSDNsdEk4RmtTSmV5LzJYUnE0QWFaUktnaDBPL0FUSEhZQUp3cUZSRUdTaXBBQXVvZVl6KzhSWVNGbEpQdTNGOUhXcW1CM3pKbkNsQkhoZjMrbVhrbGI4OHUxSDVCRWxxd2FhTHFNdTFKaEphRzdwNm52L1FSZUtpSkFnWnljd1VLcFJMNXpuQVI3U3h3U2FjZlVFMXp5UU5rZWp4MlBzNENHVG1wTTZyUWZaa2V6aStuTUhRL1BodjNKY0ZVZVErVXhsQWp1Mno2Wnc2L2dxRGo1eHkyUGowRHVxSUwyY0R4Mnp5ZnUxZmh5NEE2R1IrN2c4cmVMczh2K3dKMk96b2VYcyttVEJqdlVLblU3NENmTEVCRDlCcFpYSDAvZC9tRGdudlJIWjRZZFRsU014ZkszL2hsbDZWMC9KRXpCZ2tkK3NlaUdSTGxwNG1ORjZsVDdWMU4zZGpYb1Q0YzE4WXNqMmx2ZE5Ba0Y5aHNPRGtZVGZmcDAzQi9VangrZFhSNmR6Q1pEOTNvNG5vd3VMM3BXMXo2d3U1WlpqTGlISTdpYzVHdm1XZm10MTk0SkJVbEFreDZQam9yYkE0Y296M21EQklrSWx1UVJ2RlFCQ21BUGtBOVd6OW8xVkdnQWY0RFZmaWlwclN6bzljRHFIdHFkQXd2K2ZBOXFRWmpaK3BTVSsvYi9aRklHTlB2Z3doZ2p2eWFnREhDQ3ZRWFpRNm1pa1RUZXJ3Um1NdUZDSWVPaU1JLzRQRWdsNmJVZk5ubXN3TVBJSTBMUmdIcFlFUWtlU1JiSTQzSE1HWGloNEdtQ0lxb0llRFNRT1ErUE02WUU5cGJnNmI4Um5TT1JNa1ZqQW1TdThEd2lFb2hhS000ajBId2hwQXJDS0pXS2lFRHFtRGYrb0hnQ05EQi9HVlZJM2t0RllyUWdVVUtFQk1yTlNpSjRxc2dlMEVRU0JUVEp5Zi8xTjBSMG51QVlKYmQvcHppaTZ0NDhLTDRnelZ4Q3pGT21nR21tbVVZSkRUK0Q1QjVXSU85bElET0Y1TDNVWVE1YUtXSVlnbDVBa2ZaZXVQdWM2ODJJMGdkOWxoLzdUSlAzNFBQOEFta0FQNVNPbWljWTJPOUFGdzQ3SFdoWGJtM2ozdi9pcVdBNDhsUUVDREdPRWh3U0FTaXRuU2wzMTExK2RER1o5cy9PYXQ1ZU9vdlBHYWxrdTlPcjJVRFFHeUxXT1M5ZStsUUFTcUI5ZWpWekI4UEpWQ2VCYjB1SDdJYjZGTnNoVll0MGJsT2VQMEErOTVaRU9HRVNMc2s5L0ZwbjZlQkVGUWVUc0I3YVp0OTRwRDIyVWQrWDFJaENiaDBtV2d6cysvOEpRYjZMSmJQS3NsMVlhcnZzaUVxMVplMkdMWVdtLzRhcVdEMHZ6NjlaanNXSmNxUUdMa1NhNTdiLzdjTFhDOUNUenJLdnhkM1h3VnRBaWlLcWtVNDJMTDFEQzRKOUlpUnE3NlFNeHdTUTJJWFE4eURHU3dMK01wWXZjNkFucFRqc0ZQNXhOaW5kSTVXMnoyOVp4TEZ2NTY2aWNZY2lNc0pPWnQ5cjUrSjZOQmoxa2FuRDZPN25RL2Z3QUxVZnNzV1ZMVklHaUVQK1lEaVpycjBueXhUcnZTL1RSTVhKZ0lyZWRsb3hXWEluejFNNnBTT2lKVWhvUXJURytZTG42N3FaRVZsWitjTXZ1NlBDSkZCems3MmUxWDdJYk9FT0xvOC9Ec2RsQlh5N3VUQ1puWnlNUHEyc2wybThXOHZxWDM0dW9KVVVQVG45dEptaU0rdyt5dFkxZXArY2ZvTHNkcXI0cFlwZXZnZDI4YkFrME00cEFjMzBzcm8vYStTeVd4YWp5ZW1uWERsM05qN3JXWVZybG43WjZkcGNoQTVsaWtSSWhuZU83K0VFZGUwOXh3U1ErVm9VU3lKa250TW1STndRWVpnNU1yeHp6VjczN3ZEQXpSUjN1M1ozei9XNjNVNm51MmZQS2JOS2lkNi96eVU5L0RjbFBmd0dTZDlVcE13dSs1b0lTVG1ybUY4QzR3cGttbWhVUjN5cmpnYTZtelNKeEY2cjRoeFgvZU9QL2RQaHBHZVp4S1F6bEU1TzFrdkw1M2Ewb2ZzeUtiWUxMbEFQbkxYbHR3T2dJdU42VzZ0K1g3MzJ6aHhMWXZKcnUzNk51MVVBUDNRSG8zSFA0WWx5OE9kVUVLZHMrYVREeVFiY2VjaTJyMXJQUTRWS1lXNC8xUG12c3VTWjAzS3F5NnN2TjRJSnQwWE1mY0J2NzU0aVozYTltTlZrMmg5UHM3WnMxV3BsOWE2ZnFOK29XcHdYL2QzVk12eWFIdmhidTEvZFZCYUZYa09Balg2elZ0YXpodlB5NkhlRGVjOTBtL2RjMmV6bXphMlhQRTMrS1lEeERYeS8wbHBMY2kvWEl0cFlldkFJR244aTVCTXNZaTYyekxRTlQ4OG43dW5WcWZ0eCtQdVh6d0NlTkpNaFh4cElDZDI4K2ZyaHRuMmVZZnZDZG4vVmFyMkM0OG53N2ZXSEFYaVlnVTg5cFErcUJZSDFGQWR1c2lUNUk2UlN0NHMrWjY4VmVGZ1F3QklpemtMOVNSWGNjckdVWlgxVm1QazQ0cXhwMW5SOGVUSHRqeTZHNDBIWmdiZXoxUG9LVEVaQjg1UkdDdkplVjhJQzN4REFZTDAxcXhiSU5Bam9uZTdKMVlKUVVZZ0lVZ25LUWdrNzFDWmdKZy9aaVYwYnNzRVhxQVZXc0NDQzJKa2tzL0Y0ZURGZGk3RlRVUndWWlBQSzdZTUZsaTdnKy9BSWt2andXajdlUEQ2K3JxeS9OZXZkM1JyeDQ4dno4OUgwQzJrZjdPYUd1REh5NjRyRVV3RVJ2eVd5VXBoS2xYbFF1U3R6TkQ5L1N3Qkh0L2hlZ2s4Q25FWUtGRGRYYTNjaHdjcGJHQktjeWMwcnVlcFBqeitzUnlQdGg3MTNxTHV5c2dUK2lnYWFpQ0JacWF6d2RndUpLRXRTQllIZ01ZeXZqTmZBQWd2ZjQvNWE3SEpxOHdlZ3o5QisyUGFJRmZ5NU9iWnBjQnN6WHZyRmF0cXlvY2ErdFZINzEzNEpCUXd3cFQ4aEhnMG84YlhrR2dVVzFzc2xmOWNzTGFvOXJmSE9ZVFdKSk5rUVlXWVlsQnhoVzZTdjVoYlFWbUZqU2VJYklvNTVuT2lZYlQ5cytQdzdaSFhzanQyeFZzMjhOaTRoazl4TGhTQk1SU1VvSVg1RHl0aG10dEp1RXdxQ0ZSRTZGaG5zY0FIazd4UkhvUGd1S0N3MDJORXdwRXBrV3lvYjVKSW1pYmJmUDJRYyswblQwelhNYjVaN20rWGFnZFl6KzQxSHgvVkl6QUtSQmswc0ZsakNuQkFHL0lZSVFYMWljaG5MZzBzdWVCcjVPbjlMQlRnSFhtWTBITkNJbU9Fa1ZjQVo0S1dFNnc4RENUdHpJaFVpUWNDRjJxMXpaOXlja2hEd2xQazVHM0VQQVZIZVFsdkF4T3Ayd1FSQkV0NFVXb1Boa1RzOXYrcFpHd04vdDhsdURuTCs5LzlXV1I3K0o3OTFjZXdmSG1nZEc4Tlo4endablExN1ZydjZOSytERXczV25CcjFYTWpLdGVYNUp0QWRid1BsbGJXZGNzeXg0aFhHL0NvejBZbmc4WW0raG1ZeTljSmIyZEU4UWl6OFI2V0NRYWQ4bUU4VzlYOVBvc2x5eCtZd2RLOWo1cUY3bmMxWE1yMUd6MzREQ09FbzRyZElOMmxtNWk5ZnBFVXVMR0V5RldTY01nL2FEK1BaeFhFbHgxZ3JlQVhWWnpvVFlBWThVWlF6SEpWeFlHcGNwTlBoRGNWd3dYMXl4TG1TU21BVDdzY0c3Z0pPVERkZk5KVXZCQm5yOUpVbVVnbUNZNGd4TlNTa3FaSEYxRjlIR0VqRmhmNUNtSjl3eWhRSXJLTTB5MS82ZjAvcC9JV1RTc1I4UVQzZGRQQUMwdFc2Wm4xLzlqemljOXZqZ3RpM2xQbjhWdHFNS0xQa2JOeXYwM2kvV2ZBNWM4b1o5Ykl1TzR1MnplUGZOWURYUGVCVEFidGxnanl2MU9PcVlwZFhyOTQ0cXpyRTFxRGZOVWt4NndNT08vRGlEQUZQTW53Nm1Cc1IrUGZKVitzcFZlMjE4RFpXelNadVBxQUttalNES0d0Z1ZvcGlZMVZRNW84WlFtM0V0STBvTnFzOXBqZGJvNjVmN002KzNUMnd2Z1pqVkVsOU9ib3dudXJYMVBwZThLSW0wRGF3MEpmUUJDUWFVTUR6bWRyd09qNGI5VGJZYmhRcEsxOCtQaHZscnpMMzdZNTk4RVNGS29tYVhSV2tXeWtpejVTSTdLY0NtMUs5S1g4NzBLc0k5SHk1TUZ2L3F3ckZtbU1aVDlQKytIUTQzU3dPbGFha3ZxR2hJZG1nWUhXMWp5UGgvZkpUN1ZYeWR1QUtyWGsxYWhjRSs0Qll0MndzSGJPbDJPQTRyK3N2dWpmOVB2T1JMWkczWDMxbkFaYkhnYm5jR3FOdHBiWHhJMEd3WHduRzdSalJoclZyU2h2a2Fjcm56Y0xQKzNrYTQ1RDhDQUVWVW9HM0lONVNiN29scjI4SWVOaGJFQU5Pb1lDNWE0MVJBTzNyRHdQMzdQSjBZckxxVlgvNllVczM0elRtVnhMOTZYUTR2c2p4cVZiUTNWU3NWdFRlTkdIUGtwcko0dTJkZ0RLLzhOWmFHbDhCVXZjSmdRQVFOYk5UcTlpMUZtV2xVN0RrUWdHNmhrZFFtRWI2dW5jYnNXbU44OWVnMGpxQmVtaWF0YTlCb3ZuSE0zbEVHN3ZYYk96bjAwYWpiS3RXeTRzSVpyT2s0Ylc2aUFHTmcvVTd6dkpoOElLWG1tWVNOcnc4YWYxL0FBQUEvLzlSK0plWXl5VUFBQT09CgoKLSBwYXRoOiAvb3B0L2F6dXJlL2NvbnRhaW5lcnMvcHJvdmlzaW9uX2NvbmZpZ3Muc2gKICBwZXJtaXNzaW9uczogIjA3NDQiCiAgZW5jb2Rpbmc6IGd6aXAKICBvd25lcjogcm9vdAogIGNvbnRlbnQ6ICEhYmluYXJ5IHwKICAgIEg0c0lBQUFBQUFBQS83eGFlM1BqdG5iL1g1OENaZFI3MTlOUWxEZE83cTRiZVlhaVlGL0dFcW53NFdRYjMrRkFKQ1FqSmdrRkFHMnJhMy8zRHZnU3FiZTduZTRmWEprNDUzZWVPSGdjZnZkdjJveWsyZ3p4aDQ1bGoyQmdXaVA0KzZENzRZRnlrYUlFZzFjZ0VJbUJHb0tQWndXSnBVOWdnK0tzMHdscE9pZUxqR0U5U2tqcWM4dytuSDN0QUFCQStJQVdHS2dRcU9kQU5mTm5BdnBBbllEUDhoOVF1bC8xMGNTMGZCYzZiMHFUSmQ0Y2UrdDBjTW96aHAycDhlRU1GUGg4eFFWT1FoSERGTTFpcktlUkt4QVRnQzNER1VrajhQb0s4QXNSb0FzZEozQy91QjZjR040NGNEM2Q4WUpyM1J3ZlExRzVRT0lVbkxlR0cyNnpHWTZ4Y0RGN3dzekFUTlQ2M3ZwRE9JWmU0RUxuRGpyQjFESHZkQThHdC9CTE1OVzlmdzRVRFl0UWU4eG1tS1ZZWUs2Rm1BbWV2NGl4NERsZzd4R3ZsRjFvQm5TOGQ4Q0VUQ2lkSEljdWNjcDVEQlk0WlJ3QmxXWUNkSStvQ2o3Mkx6NjF1Qm4rQzZncGZnYnF5NC85ejBDTjBJcURmL3pRN3dQMUVhK09BKzRVVzlzRVZKN04vZ1NLWmxpRDd0YzZFWXZFV0h2K0U5L3k5YWxPRG1PQ1U3SDJycUJaK0NDemNCOVFuYkFKalVEL3AzNy9KR0w2bkFKR3FiaVVqeU1jT1lzK05TdVgrY094YVJ3MUJDMUpNOFF0Vy9hQ2JSaHpjWEVhOVpZMWgxZ0tjLzdMZDJEd2kydGJlNHhBLzUweDNQdVQwM1JUOXpiblR2ZnZvOW5XYzR1d0tBVllnUDk0eVgvaThJSHVpYytiQWw3QkRISDgwd1ZRMVFpSE5NTGc2b1R3VjVpN3ZMUWY5RmdZOG9la01BMG9KVnVHT2RYSGdURTJvU1Zua3VGQWI5RDllb1JDMCs3dnRmdjcrL3UzL3pNOFJlSXBCVjZJQlBqNVp3RHQ2OUtvclFBVTAxWUpZNXBGeWlWUWRKa0kwMndXazlESTMzMWZFQWljb2xTWU9VMzNxd2N0M2ZJQ2MvUldqZk5zeGtOR2xvTFF0S0p5L2FGck9PYlVNMjJyU1l0UVpPVHp2aWJjWjlRdUpoZUhESXNqaklVM2FtYUdPYzFZaUc4WXpaWUZxd05kMjNjTUdOdzR0ait0S1dNYUltbERRVFMyRFYxcVh3OC9KZDVxaVl2QnUwbmdmWm5DcGd0U0xDeVU0TnA4cTZFRHgySEdpRmpsT3F5cExPajlaanUzVW1QZk1iMHZHL284dFNEdlRNZno5WEZRTXJXb25HMGJOOGlEUFRZem1nbnN5VlY0TGNteGZROEduajRjcncxY01wSWd0dEtmRUluUmpNUkVyTnltZGxQSG5Pak9sMEMvMDgyeFBqVEgwaHkzNFlJU3dBMVJqSGR5dW9ZK2hpMldQREduakQ2UkNMTWhDaC9wZkQ2aFVjbG5qRzEvTkhYc08zTUVuV0NvRzdmMjlYVXdzVWZ3SUlCeUNmYnd2aDNnY3JCZ0JQUDl6SUVEUGNlRTdpRVErTEtrS1U3RkFSVDQrOVMyb09VZGdobGxyRXJUZlRBajN5bHk5d0RNTDBRSXpBNkEvR0o2SG5SMlFqaEk0REZKeUM1VEhOMkRZM05pN3JhaDV2eDE2aDVpRG42ZDd2WmxEVERNd2tkOFVJRmc2QnUzOExnZXZ6RWk4REZsZ3Q4YzA0T25xSFFjcnRDcmpaaHhQRUVwV3VESWpIQXFpRmpCRjRGVFhnWGFkMkV3MFMzOUJvNENjd1F0VDA0dytMc0hMYmNSNkl4anBuTk9GdWtheHh3VkUwYnU2d1BkZGMwYnE0blJxTE1aeDJiS0JVcERQTUVDUlVpZ1dyWnB1WjV1R1RDWVFFOGY2WjcrVmxkTkZBMVJMSm1ZKzVoVnhWTWZCVU45TERtY3dMMzFheGtSNGJMYTJKbVkwU3lOWEV2M2NobHRqcEhweXZJVDJMNDN0SDFyRkVpNlNpSitDZU1zd2hQRUJXYlhqQ2F1UUdtRVdEUWU1bER3ZDJQc2o2UzdYQTg2d2JWalQrVEp3UnJwemlnWUQ5L3FpbFNFN3c1bGNhTWUzVTdjb0k3Wm5lNlB2WExqVzdJbDZJVWtXVEp1bU8xa01UWm9WczdzaWY2N09mRW5nYlNvTnNqeHh6QXdiSDg5dFN2eHQzaFZDWC84eEpYdDBUdk15aXhRNU9ZYjJ0ZjF6a2t0ZGs1a0R2NzQ0MWhOQkFPZ1BIMVV3TC8rOVo5QVBPQTA1eXlBSXFBU29HaUhhcFlXS1dEL3h2RTByS0xpbklBMEo4WG1jUDhCcjNVSU1TeXpQb1RrRDRZRlc0VkpGSkI1TUVja3poZ0c1eC83NEVmdzhVZVEwR2pKNkF5REdRdFNMT1lrRnBpMUQ1d1RXenB4Q05jbjFud2ZxYVpBYVRJcDRLcXdKS0ZSRm1PdXlxblFpN1FtVFU5cTJUYkdzRXh6bWkrNWZOT002bjF0VGgzWmFobWZqdjBiMHlxaW1YdHRSMENUSjlBMUxETVltbFl3TWgzdHZLOFdEcGFpWXNKRk1XelkxclY1azFQVXJNWG1YdTd0TjBtMlFHcWViUjN0c1duSTdmVmdBSlFReFNTa083U3NrK1h2L0RzbHlaZDFaY1pJdE1CSy9iZGdLT1ZMeE9TaStkM2k3KzlRQ3NlSDFWSmt4UGNOcGpUTi9Rcis5cmNOakdvcURVQkx0Lzl2Nithay9xbnhHVWsxUEJONTRnQlZnQlFKb0tvMS9aeklMQ3ZMN3Ztbi9vV2IzNzVFY3M4WVArR296cldZQXpVV3JFaHBsbzgyc2hlSjNRUCswTGM4UDNEZ0dPb3VISFEveEh3V01CeGp4REZRR1ZENVdTT1R1MS9iOUcrNUs4OC85Zm9YTzV4WW5ON01kRUVaU1JlOHZEZUtWRmFxRHY3S01Gc0JlZmdtSVFhelRJQ01rM1FCaU9DZ29TaVlreGdyRzdEZUErR0FjQ2tSY0pJc1k4d0ZRTXNsb3loOEFJS0NaOG9lRVpPTEZLZ0ZFczR6ek1FekVRODBFeUNra2svZ2VBV3lsTWlsTTQ0QkVXdFJmd0IxRGpTV3BWcXBlK2svM1BRanlCT05aeEVGY1FwVWZnTEh6bEFjRGVMQlFPWjVVdHo0R1RRVmlLU1lWY254aklnSTVwUUYwcEd5bFBiQmVZRlNLVm44cjRVMVo2K01TaS9TOEFzT0F5NFFFNFh5clZwN2JZNWg4SnZ1R2Y4TVBITUNiZDg3S0c4dFFDc0taMC9RSlA0bVNMN2lvWWg3a1haK3JqYjBQMUhWZzJ0TkFRMVV0WERQMXJXbTRZM2xUTEQxVWFkeEt3b0lWMUVveUJNR3F2cFhSckFBRVEwZk1aTnA4cUVtQzhvNURUNzJ3US85WEdoSnR1UDJkQlNNYk9OVzdzVThlNXF2YTJlZC9SZXhhemVjZEJOYlpJMUZSOW5TVHFlTUpvU0gyVEN2ZG5WMTJlMS91aFRGNHI4T0xOY0tPRFdsYXBRdGUvemhoQ2k4STBVMzBNdmFjWXFJZmQ1cUliN0RZUk9hRWtHWlc2alEzc0lZdHVYcHBnV2RVVEN4TGRPejE0R1VLaFU2RGc1UFFUVXBCUFFFU1REYjc2WHVTY0pPY3RFQnBQY29YRWJsZjZmeXljb2V6LzYyQjAvclNsUnRrM0xQdW5VOVBvTFgrYUZpN1k4SXorVVJwR29YSExCNkY4Wkpwa3JHY21kUnlIMUNUSXZKckpLWi8xOFUxQ1BpR3lnblM1WXFPNzRsWDFmN20rSnlzRlJtWnhVb05ldnhoeE1jc2gvOW16S2gxS0dOVVhkTTJrMnQ0bEYzelNaa01VVk1FRUZvV25YbjlvbEp5RUpkVnNTblpWa2h4TTNYbHpyRnloV2xGZWpXQ3ZmNTgyZTErRU5GajN5OTl1OTI3amJjU2M3Y3RTSit2Tmk1SUs0dCtZVm1MRVZyVTc1dTdOWmNRUmxhNE1GU0hvYTVrRnZtVFlvY2NZSmVmSTRINXplYncwNld5a204ZC95YXNtZkVJbys2S3g3VHhXQ0ZlVUh5QnE2dTJndkpuNFd1MGRwLyt3SmJiVmdyanZmRTl2WVRsL3N3UnVOcGpGTGNQQkoySFRpMGJjK0J2L3FtQTBjU1ZaNVNMTHUrTDhuUGg0Smw4aGl6c2FsbVdHU3NQbWZ2QzFpOWhTa212VGNHSDYrMENEOXBhUmJISUl3ekxqQlRTVHFuRzVQamt5c25vMlZhTjNWU3lFTXV3MGprSlhHQ1VqTEhYSXdJYTVYR2lXNloxOUQxUnFZejJMd2VTRW9lbmxNbmp4RmhRRjBXcWpYNHBLQm5SZ281Umw3TVdpS0tSTTRGUE5BRWE5MjYzYTMxcExRTndueitkRnVNV3FORXR0V29TUm90dEc0YnE5RVpXMHUrWFAvY0JYUWllUU5lbnQvL0ljL3Z1OERxdy8wTzFxMU9YRWRWMVE1YWt2TCs2Ukk4blhmS3dQUExqbG9sd1dXQmpaa2djeElpZ1ZXVWlRZktpRmlwRVJMb0V0d3JYVVBQTzh2bXRXbm9IcnhYU29uc0NiUEwxcnBTOU4wNkFLUW93VGxyZFl2MzY4aTZWenB5Z2NBdm9sQ2crRjBxVUdxenpTSkhNNzQ5cEtJb0lXbE9zRTlZeHVUaFhLMEViVk04a2pTNkJFV3VkYVNRWExGZGNBMXB1VEtsMGlUSGJ6aXZkbG5ES2R1dUt4a2Y4V29ud3kzOGNxOTBGSEMxTjlMcXkvcnV5U2hjcDJlQzhoREZtT2xSSkJldGN1b1lZeiszUXZjOU8yL1NPSUUrR3RsV1k0RnBYdVZKWHE1VkZRTFZvR3FFbHpGZEpUZ1Z2UlZLNGtPYnUwTVNUMXZReTN0SS92cHo0U3B6ZFBYYS9aQW5kdmRBeTdIdUNKKzlMcFFqaXV3VzVPTHdCRWxGai9KYnBQRnMxcktwM1cvOUZ1U3kzZHNBcjF1KzN3TExGbXZBZGpQeVhhaDExdXFHYWRBMHhhR2dHd21yRy9rMW1nVU5lU3d3SEppM092U3hPK2grV0RLU2lqbFF2dDRyWldKRTk0cWNQdi9PNzVYdlFmVzJhRFMzUjZvMmVQdHR1L25kSGlzTzhTUENjaVZYTUkyV2xLVENaM0ZCOXlERWtsOXFXa3dYSk8wbEpHU1UwN21nYVV4UzNBdHBjcTk4ZjE4M3NJdjJFTnVMa3VUaitmeXFyZzBUYmFjaU53d3RINnFlY2FWMEJiT1FnNzFua2tiMG1mZFNMRW9NL2xjOHFTV2Nva1JJR1c3aVhINjZ1UGloQkZ1Z09NWUhQRktPYnhtU2ZKTUcycjN5cGdEbFVBRTRPRnpNV2tsU3o0aWN2ajMzbXArVlBJUCtXZnVicitxcnJVZThBb3lqeTR2KzU1L0t6N2hTR21IZStwcnJoNTkrTEw3bW9wbllhcHFVSHgrRlJLNVB4VHlRcEwwbFRvcHZ1MDVoa084S2p1cHpyNEh2YXE0M01IUnRQSGdpVEdRb3JnNko5dFlMZi9PTllXMjhVWFpNeVZ2NFpkRDlVUHJvWFdZOTk4OTJUWEhvZU84RFhKdjlYQVdvRFhsOGhXc0RucjY0N1pQejduV040WWhmdlhiM1ZydThtTzZUdGwyZExaVGdxOWVOMHZ3dURPblViWVdnNDcwTDVSR3Z0a0J1NFpmREdPdFZJZitHaWNZa1hHMHNDdm5uVDBXYjU1VG9TaHgxbVFQdERHN1RkM1VsdlhyVm11c0IxelpyZzliNkdvbHJPOTI5VzlQOGJ1azdhRjkzL2ljQUFQLy8wNjRCcjBVc0FBQT0KCgoKCi0gcGF0aDogL2V0Yy9zeXN0ZW1kL3N5c3RlbS9rdWJlbGV0LnNlcnZpY2UKICBwZXJtaXNzaW9uczogIjA2NDQiCiAgZW5jb2Rpbmc6IGd6aXAKICBvd25lcjogcm9vdAogIGNvbnRlbnQ6ICEhYmluYXJ5IHwKICAgIEg0c0lBQUFBQUFBQS80eVNUMi9hTUJqRzcvNFVWdFREZG5DOWY3Y3FCeWloUW8wQUVhb2RBQ0hIZVlGWE9FNWt2NlowNjc3N0ZQNTBvOEMwM0dML2ZzL3pIRHg1c2tnejFnR3ZIZGFFbFkwZlF3NEdpTjFYdHNEbVpLaG9sV3pSazQ5bDhFNmFTaXNqYzdSeWZVRFpKQU8zUVEwek5nSlB5bEdzekxONjhTeXhHM1NWTGNGU0Z3M0VFa2pMQWhZcUdIclRzNkExZUo5c2tUSlNGSHo4K2R0WGxteEJaMDNXMEVHOHE4dVZYM0ZaMVNUVmorQkE2c3FTUWd2T0g2TnUvZXFDVjY0TGRGelVYRzZVa3dienQrYi9ZYlhGYTF1RTVoRXUrSVRmZkNpcllJbS84cVdEbWsrajkwM1RpTC95WjgyRitjaUZBZjZKei9nZHB4Vll2cS9kNlVMa2FJdXptZWNIZDN5QjBhWDFoNWhTclVINGxYSnduc1pPUFNGOVkwSk9LamZndVNCdVZaTmgwTk5GRk92M3FBMGxPTlJINlk5MTVjSHdLZU9IVHdpd1Racnc0RGJnVG01c1ZZQXdLZ2ZqNCtqbTUrTlRPMG1UOGJ3LzZDVHp0TlZPMHV4WGRDSnM0aStuLzVVSkpZamFoQ1ZhVWFEYnY3OW1oYk5BNE9XZTJBUCtML2ZtV0RaT3MzbDdNQmhuNDFGck9PK21yWWZzRW5ZLzZIZDdEL051TDAzK0NZMWJ2WDR5Nmx4bmRoZU1UWHJXa3pKbXhyNHJTMUMwWCtJeUdFSVJQTGhiVW00SnhINEhBQUQvLytpeEFadTlBd0FBCgoKCgotIHBhdGg6IC9ldGMvYXB0L2FwdC5jb25mLmQvOTlwZXJpb2RpYwogIHBlcm1pc3Npb25zOiAiMDY0NCIKICBvd25lcjogcm9vdAogIGNvbnRlbnQ6IHwKICAgIEFQVDo6UGVyaW9kaWM6OlVwZGF0ZS1QYWNrYWdlLUxpc3RzICIwIjsKICAgIEFQVDo6UGVyaW9kaWM6OkRvd25sb2FkLVVwZ3JhZGVhYmxlLVBhY2thZ2VzICIwIjsKICAgIEFQVDo6UGVyaW9kaWM6OkF1dG9jbGVhbkludGVydmFsICIwIjsKICAgIEFQVDo6UGVyaW9kaWM6OlVuYXR0ZW5kZWQtVXBncmFkZSAiMCI7CgoKCgoKCgotIHBhdGg6IC9ldGMvc3lzdGVtZC9zeXN0ZW0va3ViZWxldC5zZXJ2aWNlLmQvMTAtY29udGFpbmVyZC5jb25mCiAgcGVybWlzc2lvbnM6ICIwNjQ0IgogIGVuY29kaW5nOiBnemlwCiAgb3duZXI6IHJvb3QKICBjb250ZW50OiAhIWJpbmFyeSB8CiAgICBINHNJQUFBQUFBQUEvMnlMc2FyQ1FCQkYrM3hGU0Q5dmVZV05zRVhVVmNRUXdjUktKRWd5eFNBN281UFo0T2VMaFdKaGQrL2huRk9ET2xHUDV5endSQ29ja2MzdmpvdFFoYlpiN3V1MjNOYmhzT3JXVmJscGZBSFFDOXVGR0JVMHNWRkVyeGpGTUljM0FNVjd3dEhnZFNTWi81L0YvRWNJeU1OTmlNMG5wc2ZjT2FlSjNVY2J2dWJmS1AyMXlKNEJBQUQvLzJjU0xFMnVBQUFBCgotIHBhdGg6IC9ldGMvY29udGFpbmVyZC9jb25maWcudG9tbAogIHBlcm1pc3Npb25zOiAiMDY0NCIKICBvd25lcjogcm9vdAogIGNvbnRlbnQ6IHwKICAgIHZlcnNpb24gPSAyCiAgICBzdWJyZWFwZXIgPSBmYWxzZQogICAgb29tX3Njb3JlID0gMAogICAgW3BsdWdpbnMuImlvLmNvbnRhaW5lcmQuZ3JwYy52MS5jcmkiXQogICAgICBzYW5kYm94X2ltYWdlID0gIm1jci5taWNyb3NvZnQuY29tL29zcy9rdWJlcm5ldGVzL3BhdXNlOjMuNSIKICAgICAgW3BsdWdpbnMuImlvLmNvbnRhaW5lcmQuZ3JwYy52MS5jcmkiLmNvbnRhaW5lcmRdCiAgICAgICAgCiAgICAgICAgW3BsdWdpbnMuImlvLmNvbnRhaW5lcmQuZ3JwYy52MS5jcmkiLmNvbnRhaW5lcmQudW50cnVzdGVkX3dvcmtsb2FkX3J1bnRpbWVdCiAgICAgICAgICBydW50aW1lX3R5cGUgPSAiaW8uY29udGFpbmVyZC5ydW50aW1lLnYxLmxpbnV4IgogICAgICAgICAgcnVudGltZV9lbmdpbmUgPSAiL3Vzci9iaW4vcnVuYyIKICAgICAgICBbcGx1Z2lucy4iaW8uY29udGFpbmVyZC5ncnBjLnYxLmNyaSIuY29udGFpbmVyZC5kZWZhdWx0X3J1bnRpbWVdCiAgICAgICAgICBydW50aW1lX3R5cGUgPSAiaW8uY29udGFpbmVyZC5ydW50aW1lLnYxLmxpbnV4IgogICAgICAgICAgcnVudGltZV9lbmdpbmUgPSAiL3Vzci9iaW4vcnVuYyIKICAgICAgCiAgICAgIFtwbHVnaW5zLiJpby5jb250YWluZXJkLmdycGMudjEuY3JpIi5jbmldCiAgICAgICAgYmluX2RpciA9ICIvb3B0L2NuaS9iaW4iCiAgICAgICAgY29uZl9kaXIgPSAiL2V0Yy9jbmkvbmV0LmQiCiAgICAgICAgY29uZl90ZW1wbGF0ZSA9ICIvZXRjL2NvbnRhaW5lcmQva3ViZW5ldF90ZW1wbGF0ZS5jb25mIgogICAgICAKICAgICAgW3BsdWdpbnMuImlvLmNvbnRhaW5lcmQuZ3JwYy52MS5jcmkiLnJlZ2lzdHJ5LmhlYWRlcnNdCiAgICAgICAgWC1NZXRhLVNvdXJjZS1DbGllbnQgPSBbImF6dXJlL2FrcyJdCiAgICBbbWV0cmljc10KICAgICAgYWRkcmVzcyA9ICIwLjAuMC4wOjEwMjU3IgogICAgCiAgICAjRU9GCgotIHBhdGg6IC9ldGMvY29udGFpbmVyZC9rdWJlbmV0X3RlbXBsYXRlLmNvbmYKICBwZXJtaXNzaW9uczogIjA2NDQiCiAgb3duZXI6IHJvb3QKICBjb250ZW50OiB8CiAgICAgIHsKICAgICAgICAgICJjbmlWZXJzaW9uIjogIjAuMy4xIiwKICAgICAgICAgICJuYW1lIjogImt1YmVuZXQiLAogICAgICAgICAgInBsdWdpbnMiOiBbewogICAgICAgICAgICAidHlwZSI6ICJicmlkZ2UiLAogICAgICAgICAgICAiYnJpZGdlIjogImNicjAiLAogICAgICAgICAgICAibXR1IjogMTUwMCwKICAgICAgICAgICAgImFkZElmIjogImV0aDAiLAogICAgICAgICAgICAiaXNHYXRld2F5IjogdHJ1ZSwKICAgICAgICAgICAgImlwTWFzcSI6IGZhbHNlLAogICAgICAgICAgICAicHJvbWlzY01vZGUiOiB0cnVlLAogICAgICAgICAgICAiaGFpcnBpbk1vZGUiOiBmYWxzZSwKICAgICAgICAgICAgImlwYW0iOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJob3N0LWxvY2FsIiwKICAgICAgICAgICAgICAgICJyYW5nZXMiOiBbe3tyYW5nZSAkaSwgJHJhbmdlIDo9IC5Qb2RDSURSUmFuZ2VzfX17e2lmICRpfX0sIHt7ZW5kfX1beyJzdWJuZXQiOiAie3skcmFuZ2V9fSJ9XXt7ZW5kfX1dLAogICAgICAgICAgICAgICAgInJvdXRlcyI6IFt7e3JhbmdlICRpLCAkcm91dGUgOj0gLlJvdXRlc319e3tpZiAkaX19LCB7e2VuZH19eyJkc3QiOiAie3skcm91dGV9fSJ9e3tlbmR9fV0KICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAicG9ydG1hcCIsCiAgICAgICAgICAgICJjYXBhYmlsaXRpZXMiOiB7InBvcnRNYXBwaW5ncyI6IHRydWV9LAogICAgICAgICAgICAiZXh0ZXJuYWxTZXRNYXJrQ2hhaW4iOiAiS1VCRS1NQVJLLU1BU1EiCiAgICAgICAgICB9XQogICAgICB9CgotIHBhdGg6IC9ldGMvc3lzdGVtZC9zeXN0ZW0vY29udGFpbmVyZC5zZXJ2aWNlCiAgcGVybWlzc2lvbnM6ICIwNjQ0IgogIG93bmVyOiByb290CiAgY29udGVudDogfAogICAgW1VuaXRdCiAgICBEZXNjcmlwdGlvbj1jb250YWluZXJkIGRhZW1vbgogICAgQWZ0ZXI9bmV0d29yay50YXJnZXQKCiAgICBbU2VydmljZV0KICAgIEV4ZWNTdGFydFByZT0vc2Jpbi9tb2Rwcm9iZSBvdmVybGF5CiAgICBFeGVjU3RhcnQ9L3Vzci9iaW4vY29udGFpbmVyZAogICAgRGVsZWdhdGU9eWVzCiAgICBLaWxsTW9kZT1wcm9jZXNzCiAgICBSZXN0YXJ0PWFsd2F5cwogICAgT09NU2NvcmVBZGp1c3Q9LTk5OQogICAgTGltaXROT0ZJTEU9MTA0ODU3NgogICAgTGltaXROUFJPQz1pbmZpbml0eQogICAgTGltaXRDT1JFPWluZmluaXR5CgogICAgW0luc3RhbGxdCiAgICBXYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldAoKICAgICNFT0YKCi0gcGF0aDogL2V0Yy9zeXN0ZW1kL3N5c3RlbS9jb250YWluZXJkLnNlcnZpY2UuZC9leGVjX3N0YXJ0LmNvbmYKICBwZXJtaXNzaW9uczogIjA2NDQiCiAgb3duZXI6IHJvb3QKICBjb250ZW50OiB8CiAgICBbU2VydmljZV0KICAgIEV4ZWNTdGFydFBvc3Q9L3NiaW4vaXB0YWJsZXMgLVAgRk9SV0FSRCBBQ0NFUFQKICAgICNFT0YKCi0gcGF0aDogL2V0Yy9jcmljdGwueWFtbAogIHBlcm1pc3Npb25zOiAiMDY0NCIKICBvd25lcjogcm9vdAogIGNvbnRlbnQ6IHwKICAgIHJ1bnRpbWUtZW5kcG9pbnQ6IHVuaXg6Ly8vcnVuL2NvbnRhaW5lcmQvY29udGFpbmVyZC5zb2NrCiAgICAjRU9GCgotIHBhdGg6IC9ldGMvc3lzY3RsLmQvMTEtY29udGFpbmVyZC5jb25mCiAgcGVybWlzc2lvbnM6ICIwNjQ0IgogIG93bmVyOiByb290CiAgY29udGVudDogfAogICAgbmV0LmlwdjQuaXBfZm9yd2FyZCA9IDEKICAgIG5ldC5pcHY0LmNvbmYuYWxsLmZvcndhcmRpbmcgPSAxCiAgICBuZXQuaXB2Ni5jb25mLmFsbC5mb3J3YXJkaW5nID0gMQogICAgbmV0LmJyaWRnZS5icmlkZ2UtbmYtY2FsbC1pcHRhYmxlcyA9IDEKICAgICNFT0YKCgotIHBhdGg6IC9ldGMvc3lzdGVtZC9zeXN0ZW0vZW5zdXJlLW5vLWR1cC5zZXJ2aWNlCiAgcGVybWlzc2lvbnM6ICIwNjQ0IgogIGVuY29kaW5nOiBnemlwCiAgb3duZXI6IHJvb3QKICBjb250ZW50OiAhIWJpbmFyeSB8CiAgICBINHNJQUFBQUFBQUEvenlOdlVvRVFSQ0U4M21LQnVPOUFmTU5EanhUd2NYb3VHQithcjNHdlo2aHUwZkVweGVWMjZ6NHFxanYvQ2JzbC9BRUs4cmR1Y2w4ckpVcTZ1aUU3Q2x2SUIwYmpOYW05REV5QkU1WnViNkRXS2hydTdHVjBZYlJyVldFNCtyUXVUVHh4QUt0QjROK2Nya1h2dzhiZktmbjVUOWN3aXZNay9yY1pGb1RiME54Und2Sy9CaE9YeWpMM3lKbWxwaVRYU20yN2pGOUQwWGNqUlloTmhTVHRLbU9mckJyZURpOVBJZWZBQUFBLy8rMUczSXc2d0FBQUE9PQoKLSBwYXRoOiAvb3B0L2F6dXJlL2NvbnRhaW5lcnMvZW5zdXJlLW5vLWR1cC5zaAogIHBlcm1pc3Npb25zOiAiMDc1NSIKICBvd25lcjogcm9vdAogIGVuY29kaW5nOiBnemlwCiAgY29udGVudDogISFiaW5hcnkgfAogICAgSDRzSUFBQUFBQUFBLzd4VlhVOGJSeFI5MzE5eFdDTVZOMW92cEpIU1V0SEtBaXFoaG1BRmVBSWVabWV1ZHdkbVp6YnpZZUtDLzNzMTYzVmloMDFLS2lWdjlueWNjOCs1ZDg4TXR2SkM2cnhncmtxU0FTelZaa2J3bFhTUVU5d1RtQ1ZvQTJWMFNSYkJTVjJpc2FhV2pnY1RIQW9yUlVtb2pTQk1qUVUzMmpPcHlZcGtnSUx4dTlLYW9NVit4Q3JKUTRSR1NjNDhDVFNNMzVGM21GcFRvekVDM3NDUm5VbE9KNU5JWHhoZnRRVVlEVjhSSEt0ak1ZS3dZelF0NzhWMVh0amRWU0ZNQzJ4c1JtRFpRSHBIYW9xWlpMZ2pxMGxCQklxTTYySmFGUVZGalVZUGswRXMybFVtS0lHcFZKNHNUUEF0NmtlS0pYd3k2RHh6b0ErTWV6WEhmY1U4N2tKQktxbzI1RnA3aE9GM1pGMGw2eGR4VDVOUEJxaThiOXgrbnBmU1Y2RVljVlBuY2ROcTh1VFdmelpCcWZ6bHI2LzNYaWNKRlo0Vmlod3l2eW91ZTRQeDMrZlowZkhSNVNTYnZEczdQVGsveE1zL2NrR3pYQWVsRWpuRjFSVzIvMFJHNzdHTG01dmZveGlkQUFEeHlpQjlldDhHUldES0VoTnpPUExwOHZRSDZiR2JUR1dIdVlWc2lwdzh6N21XdVNZL0V2bmVidlpwR3JLNHhvMmVLdWw4SHpQWE1nN1BWSmJReGlNMG1KTWZqVWFSS1RhRW1GWHpOZks5U0o0c3UvNlcxWFN3dmNPWi80WWE4SWpiOThnczBsR2pRaW0xdTdyQkl4d3A0bjVuNU9jTjRlQUExK21TNHpvZDRoR2o1WjkwbUhSemMyckVqNkplWTB5SG5lL3A5c1BhOGlMRjFnRlNid09sZlI1MzM4ajJ3eWZiRnEzYlVqLzVEcjVpZmR2M2pjYTd1Y3U1WXM1Rjdma0dmczZFc09UY045WHp6TzUzN1QrWkhHenZ5QWFSS1g2djk1OGhQcUswMUNBN05raWxKbytkcTkzc3Q1dWZyMGZEaDE4V3k5L3B4cW0rQXl2THMzK2k2eXZteGZPTmJrTWdxcXZZTEFZVlpETjdoYzZlLzlUYUdIRWVDazErTElUOVFSTW5HMWFQWE12Nm1meU5hdm85NEcxdVJyMkNQTmxhNnU1aGlRbitrK3VTazlWWUVzQXlYWGFoK21VaHp3eUUwL0hoeXFKbmpPWXdTWllsTXlFaTh0TVE3TUlXdkdKU3A3M1orN2JuMmlCMkY1cnVlL1phcUY2a2NjL3ByTUhKWlBZS21mczRWS2Zqd3dVeWd4bjU2Z1d5VERhWnN4eHJvNG5zRnVQRHcrUEp4WGZoMlp5QlNIYjA3bXp5QmFxenk0dko1VVZiMFZkc2FoOGJiMWFuVzQ5d0crb21MajY1dUdxYkNiNEp2aDBLVGZkcUh1Rkk5QkJGZUxmZjM3ODNLOUwxQi9QL1BMSmRSQTZPei83Nk53QUEvLytyczR5eFhna0FBQT09CgoKCgotIHBhdGg6IC9ldGMva3ViZXJuZXRlcy9jZXJ0cy9jYS5jcnQKICBwZXJtaXNzaW9uczogIjA2NDQiCiAgZW5jb2Rpbmc6IGJhc2U2NAogIG93bmVyOiByb290CiAgY29udGVudDogfAogICAgTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVVTJWRU5EUVhSSFowRjNTVUpCWjBsU1FVNW1OVm9yWmlzNU9WRkNUVW8xTUZGcVRDOTNOVkYzUkZGWlNrdHZXa2xvZG1OT1FWRkZURUpSUVhjS1JGUkZURTFCYTBkQk1WVkZRWGhOUTFreVJYZEpRbU5PVFdwSmQwMVVRVEZOVkUwd1QxUk5NMWRvWjFCTmFrRXhUV3BCZUUxRVZYaE5lbFUxVFhwa1lRcE5RVEI0UTNwQlNrSm5UbFpDUVUxVVFXMU9hRTFKU1VOSmFrRk9RbWRyY1docmFVYzVkekJDUVZGRlJrRkJUME5CWnpoQlRVbEpRME5uUzBOQlowVkJDbmxKWVZoeVNVNTRNRU5RTUZKelZVOTJUVFZCTTBWV1ZreFFRbXg1VG05SmJsZzJUM0JaVTFWdlQybEtTR3cyV0VFNFZXZFBibGRKV2xoc1lWVnROMWtLTW10eVNVdE9RVzVRVm05T1pHcG9XR04xTnpObFJYRlpTV1pRWjNaM1NVTnBkMGRNUVdkdVpGaEpWM0JMVEVKNldVeG1OMmcwTm01aFRIWnphVzFUUkFvdmVVTkhWbTV6TUZWTVlscDFZbmRqYVhKeWRYUlNOWE55YVVWc2NGTnRZVTR2YTBJMlZrVkdNRmh1VEhwbk5IWnBjVzgyTVUxQ1ltSnJTV0U0Y25SUkNtcFlVWEUyYVZCdGJqRnliRWM0VURFMkt5OTNWRlp6YWtOSk1tbFNXVEJXZEV4MEwyNWpjVFo0VkRRdmRHRlNVM3AzVW1oM2JrVkZLM2RQZGtoRlVrNEtjSGsxVlRGM1JpOTJObmhDTDJaWEx6aHphVXhNWkZZNVNXVlJTRlJ2UjIxaVN5OVFaV3BLVDJKU2MwdzBXRXhLWlZselN6QjNhMkpEZFRCbkx6WnFTd294UVhkU2RFRTBXbkJoZWxSeGVIVjJRV0ZtWkZGNlQyaE1iMVZYVTNGaWRWTk5VR1pHVEVkRFJUYzNTVmg1V0Zsd2RHeG5iM0kzTjFKRlUwSkNSWEZ6Q2tWaFUzbEpjMEZaWkVSU1FVMVdWbXB5T1M5ek1sUnJhVUUwYzI4dmEweDJiVGMzYVd4MlVrSk1kbUo2U1d0bFVDdEVNM1pFUWtzNGR6TkljVzVFUWs0S05sZ3JVVkF3YnpkUU9ERkhSbmQ1YTA5cVZFeExXRVJQT0ZweVoxTTFaa2h4Tld4ckswdFZTR1ZhUXpGUldVbGxORFpJVVdkSFNIa3JSRGRMYVcxd01ncFpUbEYxV2sxeWNuWlhhMmhMYmpWemFrMWhOaXMzTDFkTWRqZDFaMHhpTnpObFowaHJOeXRYUWxOSFlqbEZZMDUwT0RNNVNWRkZabnBGT0hsdVYxZFFDbG8wUzBaSmVXNVBSVmd3YlV0TFdXcE9jazVhVTJWSWNWRmtTMXBVWkRoWlpWUjRhVkpKVVZoUGVtaDRkSFJRUXk5WVZ6WkxNbmdyVVhaVVJua3diM2dLVTB0b2RrTkZjbVpzUXpkd016RllNVmMxVTIxNVlXOWhjSG92ZG5GUWVubHdMM0pTV201cU1VOVpNRU5CZDBWQlFXRk9RMDFGUVhkRVoxbEVWbEl3VUFwQlVVZ3ZRa0ZSUkVGblMydE5RVGhIUVRGVlpFVjNSVUl2ZDFGR1RVRk5Ra0ZtT0hkSVVWbEVWbEl3VDBKQ1dVVkdTMGR3WkU5MlppdFZOemxsWnpjd0NsQm1ORnBLTkVwaE56bFhRazFCTUVkRFUzRkhVMGxpTTBSUlJVSkRkMVZCUVRSSlEwRlJRbEpsWXpFck16QlJNbUp5WWpSdVRWSkpSWFZSYTJSWlN6UUtWa1ZVVURsTU5ubEhVVFpuWlUxSVRqRkZiWGxqTUcxR01sZDZNREpXZGxkaVFXVnhjbWRvYm5KSE5UWXhRVFpNTkRoVGJVZ3dkbmwzZGtsaGNVRTBiQXBGWjBSRFNUVkpVakJrVlVKRGMydFpkVVl2ZVhjNGN6TkxOMUUxU1VZNVExWTFWVFY0VjFJclJETmlXRkZ4TjI5TmVuUktiVE5rVlU5SU4yRjRNazUzQ21sc1NXbFJVR05wTjFock9HczVXVnBOTW5WSk5IQk5UakZtUTFreVJGQkpOMXBoTW5ocGNsWm5SRzk0VGpSSVVGVkJRM3B3U0hkNllqUkVVVUkzVldZS0wzVTNlVWRQTkRCS1RtZHBRaTlZTWsxV1YyUXdhM05HYTA1NWVXYzViM2xHY1hJeWNrRnhWVmRJWWs1blJqZzFiVWxtTDNOMmVpdFBOSGRsVm01NmJRcGtaV1ZSWkVWSFFrVkNhRGxHVVZkalZUVmllRzFEU0doc1RqaFZhbWxQWlRKMlMzSXJMM1E1TUdkNlNYcFRaVkJDYTAwelNtbFVObmhJZUdaRmVuRlJDak13ZEdsNk9Va3ZhVnB2ZFhGMlIydENVV0ZETUdGNUwxZEpaR1UzU0hsak5FWlhSRTlwZGpGWk5rMTZOMGN3TnpRM1FqWkxhVWx0UXpSaVRXd3JUWElLWkROWVRITXlkbWxHU3pKbFprbzBOblZUY3pkVVFrTXpSRWhOU1hZd2NIQTNUSEJHWjFaMk5HRTBibUpUVldWcVlVMVJjMnRSVm5sSFZXeHVOV2R1TXdwWmNUSmtXRnBPU0VaNlluZGFaa0pTU0dkVFNsTk1OekJvYnpGV1RIVXliVGRwYTJjNU5qRkxiRVZEUm5BclJVTTJRV2N6TW1NNGJYWmtNR3AzVW5SSENrdERZbGRRTm0wMVZYb3paMUpDTm1aRFUzbGthMlpNZHpSYVdFbGpTa1ZKUTJNMlFucEVjMVpyV25saFFrdGtha1poTjI1TldFNVplRlJGYlc1aVZVZ0tUVmxrYWl0WWRsWmxjMHR3VEVNMWRtMW9lRXRDTml0YVQyRk5VVVJQSzBJMWFqZzNTV1JUYzBSQ0szTm9RVkpoSzJGUWNVOVpOa3R2Wm01VVlVVjJiQXBvVjFGd1N6VkRNMjVOWTJWQ1ltVTVXV2M5UFFvdExTMHRMVVZPUkNCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2c9PQoKLSBwYXRoOiAvZXRjL2t1YmVybmV0ZXMvY2VydHMvY2xpZW50LmNydAogIHBlcm1pc3Npb25zOiAiMDY0NCIKICBlbmNvZGluZzogYmFzZTY0CiAgb3duZXI6IHJvb3QKICBjb250ZW50OiB8CiAgICBMUzB0TFMxQ1JVZEpUaUJEUlZKVVNVWkpRMEZVUlMwdExTMHRDazFKU1VaSFZFTkRRWGRIWjBGM1NVSkJaMGxSVWk5eVZXcHhVRmR5V2pBMWFUWTBiR2xUZURkNVZFRk9RbWRyY1docmFVYzVkekJDUVZGelJrRkVRVTRLVFZGemQwTlJXVVJXVVZGRVJYZEthbGxVUVdWR2R6QjVUV3BCZUUxRVZYaE5lbEUxVFhwa1lVWjNNSGxPUkVGNFRVUlZlRTE2VlRWTmVtUmhUVU4zZUFwR1ZFRlVRbWRPVmtKQmIxUkVTRTQxWXpOU2JHSlVjSFZpTWxKc1kzcEZWRTFDUlVkQk1WVkZRWGhOUzJKdE9XdGFWMDV6WVZkV2RXUkVRME5CYVVsM0NrUlJXVXBMYjFwSmFIWmpUa0ZSUlVKQ1VVRkVaMmRKVUVGRVEwTkJaMjlEWjJkSlFrRk1UMHAxV2s4MGQwd3JXV2dyTTBWdVRWZHRla3BvUkRjMldYTUtZekpGVDJ0TE4zSnFTVVpZV2pnclZHTkZNa2s1VG5kdGNreFNibloyWTBGVGFGUm5VVVpwUVhCV2JVeFNiMkZzYm5GSVdXVjFXVGhXZWtaUlVHRm9Ld3BZUVV0S1lUTmpkbEprWTAwd1QxSnVPVGhqTVV0RGFqUkRjRmR2T0ZBeFJuSm9SemhUYUZGRmFHTnFhVEprVG01bmVEWlBkRXA0WjBjNU5rWmhiRlpvQ20xR2VrZFdWamsyUzFwMVZtaFhkRVprYzBsSWRXTkdSMFk1TUhFdk56bFVaamswVDJGNE1IUlNkMGRsYzNkeGVFVTNaMmx5ZUZwRGQwNWlPSEZIZUZBS2MzaHFhVVp6VVRCVlFtRlVaVFI1UkZvcmNFWnhUV05LU1VkVFpua3lWWGszT1RoSVUzQmtTM05DVmk5RE5FSm5iWFJLVkhodGFrSkxiMmR0YWtaUmJBcERPVTlYWms1aFZreDRMMU5CT0VkUFUwSkJaVXhNTURGdE5qbGhlRlV5TDBvMWEwWkxNM0I1ZGsxdlEyaFZNa28zWjBoQ1EyRnhMM05VVkZwVFZuQTJDbmRWWldneWFYQXJVVTluT0hKNk1XMXlhM3BKWmpCeVRrbFFkVVZWZFRkamRVRk5hVTFTWmpabFVIQnFSVmQxUTBkUlZHaHpkalZ6VjNOM2ExSlZkR2dLWkVaQ2VUSnFkMVpJWlhSbVJHcFBhMVEyV25oclJ5OVBXR1JOUXpaNlpWVkJOek0wWkZKU1JtVlhiRXg2ZERsRWIxWlhkVEJKUzFFdlYzaGtOMFV3WWdwdk9UUkZOR1J1TWxoTWFYZE9aalptYUVOamRXOXJiVkpsTXpJM2NVeDFSWEJGVlRWb1dFSklhVzlSY1ZJNFZ5c3lZa1ZWV0Rsdll5dFpXRXQ2WmtSUkNuRjVNSEV2Um1kU1JIUmhkMmxoZVVsTGJXRnBVVnBRTUZsQ2EyUkVUMWMxUTNwQ2JuaEJWMFoyUW5aR1NGZHpNVFJGU1dwSFJDczBaRUZCY3pOQ05tc0tURUp2UkVwM1JVbEZZM1JVZVVJeFpYSmxZakZFYzFGTVdGWnJhSFJEVmtFdlJuUkNPRGRsUkVacE1qRlZRMG8wVm1SSmJWWlpTbVZQY0ZaSFdEWlBkQXBNZEVGVVQzQjJPRkphUzFadk9HbFlRV2ROUWtGQlIycFdha0pWVFVFMFIwRXhWV1JFZDBWQ0wzZFJSVUYzU1VadlJFRlVRbWRPVmtoVFZVVkVSRUZMQ2tKblozSkNaMFZHUWxGalJFRnFRVTFDWjA1V1NGSk5Ra0ZtT0VWQmFrRkJUVUk0UjBFeFZXUkpkMUZaVFVKaFFVWkxSM0JrVDNabUsxVTNPV1ZuTnpBS1VHWTBXa28wU21FM09WZENUVUV3UjBOVGNVZFRTV0l6UkZGRlFrTjNWVUZCTkVsRFFWRkRZMHBPZG1WbUszSlFkRVIwY0hkVE1IQlBWbFE1TlhwS0t3cHFiQ3RwU1VORlVWVnpRa2dyVFdGdGNGZHJVVmRrUmtabGVXRXJkM0ZxTmxWb2IwdG5TV3M1UzNOQ2FFaFBaVTh3ZUhCSE0wMW5NVk5CZW10M2FXTXlDbFEwYms5dlVtbDRNRkprUlRGeGQwcDJXalp0TmpWdmVscDJWR3A1WlV0cFQzWnZVRkZuVmtkVmVVbHFlR3A2V1ROa1dVRkhiRGQwUnpFd1pFWllWMjhLYjNNclNWRTBlVlJIUlhWd1lTczFlRE5EUzAxVWRYSklZamhRTkdWdlJHRmhRVEpYTmtZclJXeHhhRWRYYURscFoyZDROVzEzSzFVd1RrZHhiSFp4V2dwTVNUZFBPVzQxTWs5RmJHcGtWbFZtT0U1cVlVRlFla1V2YjBvdlRXVXhUVm81YkVwTE0xaFZiVTlIYmpkVlYwSjJWVVI2VDNaaVMzSnFPVTgySzFaVkNsSnRkRE5zV25jMEswUk1lVTFOVjBoNlpETlFlbWt4VjFkVGNUbElTMjUyYWpOTVUzUlhaRmwwTnpKdE5YRTJWbGh6WlVOd1JVSkNRV0ZaVm5Odk9USUtUVTF2U0c1UksyRkJUbmx5Tm0xWVVrVjRWVzk0Tkhkb2FqWXJNbU5oYlZndmMzYzFNbkp2Y0VRMlVVSklZMXBUUmpNeWNVdHhiVXBNVUhJd1pFVXhOd3BDVFVJeEwwYzVaRnBrWlU0NVJreFFZM1pQZDJ4VVYxQk5jMmN2VUZGb2VIWmlablZWTW1sVlRWVnNSM1l3WTA0eFFWcE1SbUpDUTFkVFJqQTNSV3RwQ2tWa1RqQmhRWEp0VG5OTE5YUXpUalpKVkRoSVJrTmlRWFV5V0VsUFRrOHJSMXBSZHpCRFkwbDRkR3gwU1RkR1JYY3lSVGhSTURFelRIUnBkV3h1T1VFS01XZHJWRXA0Um5RMFVuSjJUVE5ET1VSVGJGazNObmhIYlN0RmEwMUtVVEZ4UkV3clUwWTFNbFJ6YVV0VWVVcElSVWgzWmxkc1VrcFhPRWRPTlZkallRcFRaVk5FT1ZOeldrRkhlRmd4UkU0elZscG9LMk5SVkdSMFJuSmtVWFJwZFZwRVJtOWhTRVJxUTBJeEwwSkRWMHRTUkRKeGQwWTRibVZyYTBoMWQyZHZDbG8wZFdoT1l6ZGFZM0V3WW5Ka1RIbG9kejA5Q2kwdExTMHRSVTVFSUVORlVsUkpSa2xEUVZSRkxTMHRMUzBLCgoKCi0gcGF0aDogL3Zhci9saWIva3ViZWxldC9rdWJlY29uZmlnCiAgcGVybWlzc2lvbnM6ICIwNjQ0IgogIG93bmVyOiByb290CiAgY29udGVudDogfAogICAgYXBpVmVyc2lvbjogdjEKICAgIGtpbmQ6IENvbmZpZwogICAgY2x1c3RlcnM6CiAgICAtIG5hbWU6IGxvY2FsY2x1c3RlcgogICAgICBjbHVzdGVyOgogICAgICAgIGNlcnRpZmljYXRlLWF1dGhvcml0eTogL2V0Yy9rdWJlcm5ldGVzL2NlcnRzL2NhLmNydAogICAgICAgIHNlcnZlcjogaHR0cHM6Ly9hbS10ZXN0LWRucy1hMjEyNjUwNS5oY3AuZ2VybWFueXdlc3RjZW50cmFsLmF6bWs4cy5pbzo0NDMKICAgIHVzZXJzOgogICAgLSBuYW1lOiBjbGllbnQKICAgICAgdXNlcjoKICAgICAgICBjbGllbnQtY2VydGlmaWNhdGU6IC9ldGMva3ViZXJuZXRlcy9jZXJ0cy9jbGllbnQuY3J0CiAgICAgICAgY2xpZW50LWtleTogL2V0Yy9rdWJlcm5ldGVzL2NlcnRzL2NsaWVudC5rZXkKICAgIGNvbnRleHRzOgogICAgLSBjb250ZXh0OgogICAgICAgIGNsdXN0ZXI6IGxvY2FsY2x1c3RlcgogICAgICAgIHVzZXI6IGNsaWVudAogICAgICBuYW1lOiBsb2NhbGNsdXN0ZXJjb250ZXh0CiAgICBjdXJyZW50LWNvbnRleHQ6IGxvY2FsY2x1c3RlcmNvbnRleHQKICAgICNFT0YKCi0gcGF0aDogL2V0Yy9kZWZhdWx0L2t1YmVsZXQKICBwZXJtaXNzaW9uczogIjA2NDQiCiAgb3duZXI6IHJvb3QKICBjb250ZW50OiB8CiAgICBLVUJFTEVUX0ZMQUdTPS0tYWRkcmVzcz0wLjAuMC4wIC0tYW5vbnltb3VzLWF1dGg9ZmFsc2UgLS1hdXRoZW50aWNhdGlvbi10b2tlbi13ZWJob29rPXRydWUgLS1hdXRob3JpemF0aW9uLW1vZGU9V2ViaG9vayAtLWF6dXJlLWNvbnRhaW5lci1yZWdpc3RyeS1jb25maWc9L2V0Yy9rdWJlcm5ldGVzL2F6dXJlLmpzb24gLS1jZ3JvdXBzLXBlci1xb3M9dHJ1ZSAtLWNsaWVudC1jYS1maWxlPS9ldGMva3ViZXJuZXRlcy9jZXJ0cy9jYS5jcnQgLS1jbG91ZC1jb25maWc9L2V0Yy9rdWJlcm5ldGVzL2F6dXJlLmpzb24gLS1jbG91ZC1wcm92aWRlcj1henVyZSAtLWNsdXN0ZXItZG5zPTEwLjAuMC4xMCAtLWNsdXN0ZXItZG9tYWluPWNsdXN0ZXIubG9jYWwgLS1lbmZvcmNlLW5vZGUtYWxsb2NhdGFibGU9cG9kcyAtLWV2ZW50LXFwcz0wIC0tZXZpY3Rpb24taGFyZD1tZW1vcnkuYXZhaWxhYmxlPDc1ME1pLG5vZGVmcy5hdmFpbGFibGU8MTAlLG5vZGVmcy5pbm9kZXNGcmVlPDUlIC0tZmVhdHVyZS1nYXRlcz1DU0lNaWdyYXRpb249dHJ1ZSxDU0lNaWdyYXRpb25BenVyZURpc2s9dHJ1ZSxEeW5hbWljS3ViZWxldENvbmZpZz1mYWxzZSAtLWltYWdlLWdjLWhpZ2gtdGhyZXNob2xkPTg1IC0taW1hZ2UtZ2MtbG93LXRocmVzaG9sZD04MCAtLWltYWdlLXB1bGwtcHJvZ3Jlc3MtZGVhZGxpbmU9MzBtIC0ta2VlcC10ZXJtaW5hdGVkLXBvZC12b2x1bWVzPWZhbHNlIC0ta3ViZS1yZXNlcnZlZD1jcHU9MTAwbSxtZW1vcnk9MTYzOE1pIC0ta3ViZWNvbmZpZz0vdmFyL2xpYi9rdWJlbGV0L2t1YmVjb25maWcgLS1tYXgtcG9kcz0xMTAgLS1uZXR3b3JrLXBsdWdpbj1rdWJlbmV0IC0tbm9kZS1zdGF0dXMtdXBkYXRlLWZyZXF1ZW5jeT0xMHMgLS1ub24tbWFzcXVlcmFkZS1jaWRyPTAuMC4wLjAvMCAtLXBvZC1pbmZyYS1jb250YWluZXItaW1hZ2U9bWNyLm1pY3Jvc29mdC5jb20vb3NzL2t1YmVybmV0ZXMvcGF1c2U6My41IC0tcG9kLW1hbmlmZXN0LXBhdGg9L2V0Yy9rdWJlcm5ldGVzL21hbmlmZXN0cyAtLXBvZC1tYXgtcGlkcz0tMSAtLXByb3RlY3Qta2VybmVsLWRlZmF1bHRzPXRydWUgLS1yZWFkLW9ubHktcG9ydD0wIC0tcmVzb2x2LWNvbmY9L3J1bi9zeXN0ZW1kL3Jlc29sdmUvcmVzb2x2LmNvbmYgLS1yb3RhdGUtY2VydGlmaWNhdGVzPWZhbHNlIC0tc3RyZWFtaW5nLWNvbm5lY3Rpb24taWRsZS10aW1lb3V0PTRoIC0tdGxzLWNlcnQtZmlsZT0vZXRjL2t1YmVybmV0ZXMvY2VydHMva3ViZWxldHNlcnZlci5jcnQgLS10bHMtY2lwaGVyLXN1aXRlcz1UTFNfRUNESEVfRUNEU0FfV0lUSF9BRVNfMTI4X0dDTV9TSEEyNTYsVExTX0VDREhFX1JTQV9XSVRIX0FFU18xMjhfR0NNX1NIQTI1NixUTFNfRUNESEVfRUNEU0FfV0lUSF9DSEFDSEEyMF9QT0xZMTMwNSxUTFNfRUNESEVfUlNBX1dJVEhfQUVTXzI1Nl9HQ01fU0hBMzg0LFRMU19FQ0RIRV9SU0FfV0lUSF9DSEFDSEEyMF9QT0xZMTMwNSxUTFNfRUNESEVfRUNEU0FfV0lUSF9BRVNfMjU2X0dDTV9TSEEzODQsVExTX1JTQV9XSVRIX0FFU18yNTZfR0NNX1NIQTM4NCxUTFNfUlNBX1dJVEhfQUVTXzEyOF9HQ01fU0hBMjU2IC0tdGxzLXByaXZhdGUta2V5LWZpbGU9L2V0Yy9rdWJlcm5ldGVzL2NlcnRzL2t1YmVsZXRzZXJ2ZXIua2V5IAogICAgS1VCRUxFVF9SRUdJU1RFUl9TQ0hFRFVMQUJMRT10cnVlCiAgICBORVRXT1JLX1BPTElDWT0KCiAgICBLVUJFTEVUX05PREVfTEFCRUxTPWt1YmVybmV0ZXMuYXp1cmUuY29tL3JvbGU9YWdlbnQsYWdlbnRwb29sPWFnZW50cG9vbCxrdWJlcm5ldGVzLmF6dXJlLmNvbS9hZ2VudHBvb2w9YWdlbnRwb29sLHN0b3JhZ2Vwcm9maWxlPW1hbmFnZWQsc3RvcmFnZXRpZXI9UHJlbWl1bV9MUlMsa3ViZXJuZXRlcy5henVyZS5jb20vc3RvcmFnZXByb2ZpbGU9bWFuYWdlZCxrdWJlcm5ldGVzLmF6dXJlLmNvbS9zdG9yYWdldGllcj1QcmVtaXVtX0xSUyxrdWJlcm5ldGVzLmF6dXJlLmNvbS9vcy1za3U9VWJ1bnR1LGt1YmVybmV0ZXMuYXp1cmUuY29tL2NsdXN0ZXI9TUNfYW0tdGVzX2dyb3VwX2FtLXRlc3RfZ2VybWFueXdlc3RjZW50cmFsLGt1YmVybmV0ZXMuYXp1cmUuY29tL21vZGU9c3lzdGVtLGt1YmVybmV0ZXMuYXp1cmUuY29tL25vZGUtaW1hZ2UtdmVyc2lvbj1BS1NVYnVudHUtMTgwNGdlbjJjb250YWluZXJkLTIwMjEuMTIuMDcKCiAgICAjRU9GCgotIHBhdGg6IC9vcHQvYXp1cmUvY29udGFpbmVycy9rdWJlbGV0LnNoCiAgcGVybWlzc2lvbnM6ICIwNzU1IgogIG93bmVyOiByb290CiAgY29udGVudDogfAogICAgIyEvYmluL2Jhc2gKCgogICAgIyBEaXNhbGxvdyBjb250YWluZXIgZnJvbSByZWFjaGluZyBvdXQgdG8gdGhlIHNwZWNpYWwgSVAgYWRkcmVzcyAxNjguNjMuMTI5LjE2CiAgICAjIGZvciBUQ1AgcHJvdG9jb2wgKHdoaWNoIGh0dHAgdXNlcykKICAgICMKICAgICMgMTY4LjYzLjEyOS4xNiBjb250YWlucyBwcm90ZWN0ZWQgc2V0dGluZ3MgdGhhdCBoYXZlIHByaXZpbGVkZ2VkIGluZm8uCiAgICAjCiAgICAjIFRoZSBob3N0IGNhbiBzdGlsbCByZWFjaCAxNjguNjMuMTI5LjE2IGJlY2F1c2UgaXQgZ29lcyB0aHJvdWdoIHRoZSBPVVRQVVQgY2hhaW4sIG5vdCBGT1JXQVJELgogICAgIwogICAgIyBOb3RlOiB3ZSBzaG91bGQgbm90IGJsb2NrIGFsbCB0cmFmZmljIHRvIDE2OC42My4xMjkuMTYuIEZvciBleGFtcGxlIFVEUCB0cmFmZmljIGlzIHN0aWxsIG5lZWRlZAogICAgIyBmb3IgRE5TLgogICAgaXB0YWJsZXMgLUkgRk9SV0FSRCAtZCAxNjguNjMuMTI5LjE2IC1wIHRjcCAtLWRwb3J0IDgwIC1qIERST1AKICAgICNFT0YKCi0gcGF0aDogL2V0Yy9zeXNjdGwuZC85OTktc3lzY3RsLWFrcy5jb25mCiAgcGVybWlzc2lvbnM6ICIwNjQ0IgogIG93bmVyOiByb290CiAgY29udGVudDogfAogICAgIyBUaGlzIGlzIGEgcGFydGlhbCB3b3JrYXJvdW5kIHRvIHRoaXMgdXBzdHJlYW0gS3ViZXJuZXRlcyBpc3N1ZToKICAgICMgaHR0cHM6Ly9naXRodWIuY29tL2t1YmVybmV0ZXMva3ViZXJuZXRlcy9pc3N1ZXMvNDE5MTYjaXNzdWVjb21tZW50LTMxMjQyODczMQogICAgbmV0LmlwdjQudGNwX3JldHJpZXMyPTgKICAgIG5ldC5jb3JlLm1lc3NhZ2VfYnVyc3Q9ODAKICAgIG5ldC5jb3JlLm1lc3NhZ2VfY29zdD00MAogICAgbmV0LmNvcmUuc29tYXhjb25uPTE2Mzg0CiAgICBuZXQuaXB2NC50Y3BfbWF4X3N5bl9iYWNrbG9nPTE2Mzg0CiAgICBuZXQuaXB2NC5uZWlnaC5kZWZhdWx0LmdjX3RocmVzaDE9NDA5NgogICAgbmV0LmlwdjQubmVpZ2guZGVmYXVsdC5nY190aHJlc2gyPTgxOTIKICAgIG5ldC5pcHY0Lm5laWdoLmRlZmF1bHQuZ2NfdGhyZXNoMz0xNjM4NAoKICAgICNFT0YKCnJ1bmNtZDoKLSBzZXQgLXgKLSAuIC9vcHQvYXp1cmUvY29udGFpbmVycy9wcm92aXNpb25fc291cmNlLnNoCi0gLiAvb3B0L2F6dXJlL2NvbnRhaW5lcnMvcHJvdmlzaW9uX3NvdXJjZV9kaXN0cm8uc2gKLSBhcHRtYXJrV0FMaW51eEFnZW50IGhvbGQK - - - 1.0 - - kms.core.windows.net - true - - true - true - false - false - - - -