diff --git a/.ci/heartbeat-synthetics.groovy b/.ci/heartbeat-synthetics.groovy new file mode 100644 index 000000000000..0936270317dd --- /dev/null +++ b/.ci/heartbeat-synthetics.groovy @@ -0,0 +1,122 @@ +#!/usr/bin/env groovy + +@Library('apm@current') _ + +pipeline { + agent { label 'ubuntu-18 && immutable' } + environment { + BASE_DIR = 'src/github.com/elastic/beats' + DOCKERELASTIC_SECRET = 'secret/observability-team/ci/docker-registry/prod' + DOCKER_REGISTRY = 'docker.elastic.co' + SYNTHETICS = "-synthetics" + PIPELINE_LOG_LEVEL = "INFO" + BEATS_FOLDER = "x-pack/heartbeat" + } + options { + timeout(time: 3, unit: 'HOURS') + buildDiscarder(logRotator(numToKeepStr: '20', artifactNumToKeepStr: '20', daysToKeepStr: '30')) + timestamps() + ansiColor('xterm') + disableResume() + durabilityHint('PERFORMANCE_OPTIMIZED') + disableConcurrentBuilds() + } + triggers { + issueCommentTrigger('(?i)^\\/packag[ing|e] synthetics$') + } + parameters { + booleanParam(name: 'linux', defaultValue: true, description: 'Allow linux stages.') + } + stages { + stage('Checkout') { + options { skipDefaultCheckout() } + steps { + deleteDir() + gitCheckout(basedir: "${BASE_DIR}") + setEnvVar("GO_VERSION", readFile("${BASE_DIR}/.go-version").trim()) + } + } + stage('Build and test'){ + steps { + withGithubNotify(context: "Build and test") { + withBeatsEnv{ + dir("${env.BEATS_FOLDER}") { + sh(label: 'Build and test', script: 'mage build test') + } + } + } + } + } + stage('Package Linux'){ + environment { + HOME = "${env.WORKSPACE}" + PLATFORMS = [ + '+all', + 'linux/amd64' + ].join(' ') + } + steps { + withGithubNotify(context: "Packaging Linux ${BEATS_FOLDER}") { + release() + pushCIDockerImages() + } + } + } + } +} + +def pushCIDockerImages(){ + catchError(buildResult: 'UNSTABLE', message: 'Unable to push Docker images', stageResult: 'FAILURE') { + tagAndPush('heartbeat') + } +} + +def tagAndPush(name){ + def libbetaVer = sh(label: 'Get libbeat version', script: 'grep defaultBeatVersion ${BASE_DIR}/libbeat/version/version.go|cut -d "=" -f 2|tr -d \\"', returnStdout: true)?.trim() + + def tagName = "${libbetaVer}" + def oldName = "${DOCKER_REGISTRY}/beats/${name}:${libbetaVer}" + def newName = "${DOCKER_REGISTRY}/observability-ci/${name}:${libbetaVer}${env.SYNTHETICS}" + def commitName = "${DOCKER_REGISTRY}/observability-ci/${name}:${env.GIT_BASE_COMMIT}" + dockerLogin(secret: "${DOCKERELASTIC_SECRET}", registry: "${DOCKER_REGISTRY}") + retry(3){ + sh(label:'Change tag and push', script: """ + docker tag ${oldName} ${newName} + docker push ${newName} + docker tag ${oldName} ${commitName} + docker push ${commitName} + """) + } +} + +def release(){ + withBeatsEnv(){ + dir("${env.BEATS_FOLDER}") { + sh(label: "Release ${env.BEATS_FOLDER} ${env.PLATFORMS}", script: 'mage package') + } + } +} + +/** +* There is a specific folder structure in https://staging.elastic.co/ and https://artifacts.elastic.co/downloads/ +* therefore the storage bucket in GCP should follow the same folder structure. +* This is required by https://github.com/elastic/beats-tester +* e.g. +* baseDir=name -> return name +* baseDir=name1/name2/name3-> return name2 +*/ +def getBeatsName(baseDir) { + return baseDir.replace('x-pack/', '') +} + +def withBeatsEnv(Closure body) { + withMageEnv(){ + withEnv([ + "PYTHON_ENV=${WORKSPACE}/python-env" + ]) { + dir("${env.BASE_DIR}"){ + body() + } + } + } +} diff --git a/go.mod b/go.mod index 54d089a84853..d407a3f7de8d 100644 --- a/go.mod +++ b/go.mod @@ -80,6 +80,7 @@ require ( github.com/go-ole/go-ole v1.2.5-0.20190920104607-14974a1cf647 // indirect github.com/go-sourcemap/sourcemap v2.1.2+incompatible // indirect github.com/go-sql-driver/mysql v1.4.1 + github.com/go-test/deep v1.0.7 github.com/gocarina/gocsv v0.0.0-20170324095351-ffef3ffc77be github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e github.com/godror/godror v0.10.4 diff --git a/go.sum b/go.sum index 58fd46efade3..a9ec46b68c4c 100644 --- a/go.sum +++ b/go.sum @@ -329,6 +329,8 @@ github.com/go-sql-driver/mysql v1.4.1 h1:g24URVg0OFbNUTx9qqY1IRZ9D9z3iPyi5zKhQZp github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-test/deep v1.0.7 h1:/VSMRlnY/JSyqxQUzQLKVMAskpY/NZKFA5j2P+0pP2M= +github.com/go-test/deep v1.0.7/go.mod h1:QV8Hv/iy04NyLBxAdO9njL0iVPN1S4d/A3NVv1V36o8= github.com/gobuffalo/here v0.6.0 h1:hYrd0a6gDmWxBM4TnrGw8mQg24iSVoIkHEk7FodQcBI= github.com/gobuffalo/here v0.6.0/go.mod h1:wAG085dHOYqUpf+Ap+WOdrPTp5IYcDAs/x7PLa8Y5fM= github.com/gocarina/gocsv v0.0.0-20170324095351-ffef3ffc77be h1:zXHeEEJ231bTf/IXqvCfeaqjLpXsq42ybLoT4ROSR6Y= diff --git a/heartbeat/_meta/fields.common.yml b/heartbeat/_meta/fields.common.yml index a08abf64fb66..8649af40f291 100644 --- a/heartbeat/_meta/fields.common.yml +++ b/heartbeat/_meta/fields.common.yml @@ -122,6 +122,56 @@ type: long description: Duration in microseconds +- key: synthetics + title: "Synthetics types" + description: + fields: + - name: synthetics + type: group + description: > + Synthetics related fields. + fields: + - name: type + type: keyword + - name: package_version + type: keyword + - name: index + type: integer + description: > + Indexed used for creating total order of all events + in this invocation. + - name: payload + type: object + enabled: false + - name: blob + type: binary + description: binary data payload + - name: blob_mime + type: keyword + description: mime type of blob data + - name: step + type: group + fields: + - name: name + type: text + - name: index + type: integer + - name: journey + type: group + fields: + - name: name + type: text + - name: id + type: keyword + - name: error + type: group + fields: + - name: name + type: keyword + - name: message + type: text + - name: stack + type: text - key: http title: "HTTP monitor" description: diff --git a/heartbeat/beater/heartbeat.go b/heartbeat/beater/heartbeat.go index e944798887e2..13509c6bb32d 100644 --- a/heartbeat/beater/heartbeat.go +++ b/heartbeat/beater/heartbeat.go @@ -18,6 +18,7 @@ package beater import ( + "context" "fmt" "time" @@ -99,6 +100,13 @@ func (bt *Heartbeat) Run(b *beat.Beat) error { } } + if len(bt.config.SyntheticSuites) > 0 { + err := bt.RunSyntheticSuiteMonitors(b) + if err != nil { + return err + } + } + if bt.config.Autodiscover != nil { bt.autodiscover, err = bt.makeAutodiscover(b) if err != nil { @@ -160,6 +168,50 @@ func (bt *Heartbeat) RunReloadableMonitors(b *beat.Beat) (err error) { return nil } +// Provide hook to define journey list discovery from x-pack +type JourneyLister func(ctx context.Context, suiteFile string, params common.MapStr) ([]string, error) + +var mainJourneyLister JourneyLister + +func RegisterJourneyLister(jl JourneyLister) { + mainJourneyLister = jl +} + +func (bt *Heartbeat) RunSyntheticSuiteMonitors(b *beat.Beat) error { + // If we are running without XPack this will be nil + if mainJourneyLister == nil { + return nil + } + for _, suite := range bt.config.SyntheticSuites { + logp.Info("Listing suite %s", suite.Path) + journeyNames, err := mainJourneyLister(context.TODO(), suite.Path, suite.Params) + if err != nil { + return err + } + factory := monitors.NewFactory(b.Info, bt.scheduler, false) + for _, name := range journeyNames { + cfg, err := common.NewConfigFrom(map[string]interface{}{ + "type": "browser", + "path": suite.Path, + "schedule": suite.Schedule, + "params": suite.Params, + "journey_name": name, + "name": name, + "id": name, + }) + if err != nil { + return err + } + created, err := factory.Create(b.Publisher, cfg) + if err != nil { + return errors.Wrap(err, "could not create monitor") + } + created.Start() + } + } + return nil +} + // makeAutodiscover creates an autodiscover object ready to be started. func (bt *Heartbeat) makeAutodiscover(b *beat.Beat) (*autodiscover.Autodiscover, error) { autodiscover, err := autodiscover.NewAutodiscover( diff --git a/heartbeat/config/config.go b/heartbeat/config/config.go index 5e676c191083..bfee8096f393 100644 --- a/heartbeat/config/config.go +++ b/heartbeat/config/config.go @@ -28,10 +28,11 @@ import ( // Config defines the structure of heartbeat.yml. type Config struct { // Modules is a list of module specific configuration data. - Monitors []*common.Config `config:"monitors"` - ConfigMonitors *common.Config `config:"config.monitors"` - Scheduler Scheduler `config:"scheduler"` - Autodiscover *autodiscover.Config `config:"autodiscover"` + Monitors []*common.Config `config:"monitors"` + ConfigMonitors *common.Config `config:"config.monitors"` + Scheduler Scheduler `config:"scheduler"` + Autodiscover *autodiscover.Config `config:"autodiscover"` + SyntheticSuites []*SyntheticSuite `config:"synthetic_suites"` } // Scheduler defines the syntax of a heartbeat.yml scheduler block. @@ -40,5 +41,12 @@ type Scheduler struct { Location string `config:"location"` } +type SyntheticSuite struct { + Path string `config:"path"` + Name string `config:"id_prefix"` + Schedule string `config:"schedule"` + Params map[string]interface{} `config:"params"` +} + // DefaultConfig is the canonical instantiation of Config. var DefaultConfig = Config{} diff --git a/heartbeat/docs/fields.asciidoc b/heartbeat/docs/fields.asciidoc index e4c8daca230f..3acc30ff6b33 100644 --- a/heartbeat/docs/fields.asciidoc +++ b/heartbeat/docs/fields.asciidoc @@ -26,6 +26,7 @@ grouped in the following categories: * <> * <> * <> +* <> * <> * <> @@ -9638,6 +9639,122 @@ type: integer -- +[[exported-fields-synthetics]] +== Synthetics types fields + +None + + +[float] +=== synthetics + +Synthetics related fields. + + + +*`synthetics.type`*:: ++ +-- +type: keyword + +-- + +*`synthetics.package_version`*:: ++ +-- +type: keyword + +-- + +*`synthetics.index`*:: ++ +-- +Indexed used for creating total order of all events in this invocation. + + +type: integer + +-- + +*`synthetics.payload`*:: ++ +-- +type: object + +Object is not enabled. + +-- + +*`synthetics.blob`*:: ++ +-- +binary data payload + +type: binary + +-- + +*`synthetics.blob_mime`*:: ++ +-- +mime type of blob data + +type: keyword + +-- + + +*`synthetics.step.name`*:: ++ +-- +type: text + +-- + +*`synthetics.step.index`*:: ++ +-- +type: integer + +-- + + +*`synthetics.journey.name`*:: ++ +-- +type: text + +-- + +*`synthetics.journey.id`*:: ++ +-- +type: keyword + +-- + + +*`synthetics.error.name`*:: ++ +-- +type: keyword + +-- + +*`synthetics.error.message`*:: ++ +-- +type: text + +-- + +*`synthetics.error.stack`*:: ++ +-- +type: text + +-- + [[exported-fields-tcp]] == TCP layer fields diff --git a/heartbeat/hbtestllext/isdefs.go b/heartbeat/hbtestllext/isdefs.go index b913c6c40daa..1ec55d19949e 100644 --- a/heartbeat/hbtestllext/isdefs.go +++ b/heartbeat/hbtestllext/isdefs.go @@ -33,3 +33,11 @@ var IsTime = isdef.Is("time", func(path llpath.Path, v interface{}) *llresult.Re } return llresult.ValidResult(path) }) + +var IsInt64 = isdef.Is("positiveInt64", func(path llpath.Path, v interface{}) *llresult.Results { + _, ok := v.(int64) + if !ok { + return llresult.SimpleResult(path, false, "expected an int64") + } + return llresult.ValidResult(path) +}) diff --git a/heartbeat/include/fields.go b/heartbeat/include/fields.go index 6afa92c47f15..d8f43a9c8bf2 100644 --- a/heartbeat/include/fields.go +++ b/heartbeat/include/fields.go @@ -32,5 +32,5 @@ func init() { // AssetFieldsYml returns asset data. // This is the base64 encoded gzipped contents of fields.yml. func AssetFieldsYml() string { - return "eJzs/WtzGzmSMAp/71+BVxvxyp6lSqRulnXORDxqSe5WrC8aS57e6fGGBFaBJEZVQDWAEs1+Yv/7CWQCKNRFEiWbbrtHszsekawCEolE3pCX/yC/HL5/e/r2p/8fOZZESENYxg0xM67JhOeMZFyx1OSLAeGGzKkmUyaYooZlZLwgZsbIydE5KZX8F0vN4If/IGOqWUakgO9vmNJcCjJKXiTD/2SfyuSH/yBnOaOakRuuuSEzY0p9sLk55WZWjZNUFpssp9rwdJOlmhhJdDWdMm1IOqNiyuArO/SEszzTyQ8/bJBrtjggLNU/EGK4ydmBfeAHQjKmU8VLw6WAr8gr9w5xbx/8QMgGEbRgB2T9/xheMG1oUa7/QAghObth+QFJpWLwWbHfKq5YdkCMqvArsyjZAcmowY+N+daPqWGbdkwynzEBqGI3TBgiFZ9yYVGY/ADvEXJh8c01PJSF99gno2hqUT1RsqhHGNiJeUrzfEEUKxXTTBgupjCRG7GernfTtKxUysL8p5PoBfyNzKgmQnpocxLQM0DyuKF5xQDoAEwpyyq307hh3WQTrrSB91tgKZYyflNDVfKS5VzUcL13OMf9IhOpCM1zHEEnuE/sEy1Ku+nrW8PR3sZwd2Nr+2K4fzDcPdjeSfZ3t39dj7Y5p2OW694Nxt2UY0vJ8AX+eYnfX7PFXKqsZ6OPKm1kYR/YRJyUlCsd1nBEBRkzUtljYSShWUYKZijhYiJVQe0g9nu3JnI+k1WewVFMpTCUCyKYtluH4AD52v8c5jnugSZUMaKNtIii2kMaADjxCLrKZHrN1BWhIiNX1/v6yqGjg8n/u0bLMucpQLd2QNYmUm6MqVobkDUmbuw3pZJZlcLv/xsjuGBa0ym7A8OGfTI9aHwlFcnl1CEC6MGN5XbfoQN/sk+6nwdEloYX/PdAd5ZObjib2zPBBaHwtP2CqYAVO502qkpNZfGWy6kmc25msjKEiprsGzAMiDQzphz7IClubSpFSg0TEeUbaYEoCCWzqqBiQzGa0XHOiK6KgqoFkdGJi49hUeWGl3lYuybsE9f2yM/Yop6wGHPBMsKFkUSK8HR7I39meS7JL1LlWbRFhk7vOgExpfOpkIpd0rG8YQdkNNza6e7ca66NXY97TwdSN3RKGE1nfpVNGvtnTEJIV1tr/xOTEp0ygZTi2Pph+GKqZFUekK0eOrqYMXwz7JI7Ro65UkLHdpORDU7M3J4ey0CNFXITtxVULCzOqT2FeW7P3YBkzOAfUhE51kzd2O1BcpWWzGbS7pRUxNBrpknBqK4UK+wDbtjwWPt0asJFmlcZIz8yavkArFWTgi4IzbUkqhL2bTev0glINFho8he3VDeknlkmOWY1PwbKtvBTnmtPe4gkVQlhz4lEBFnYovUpN+R8xlTMvWe0LJmlQLtYOKlhqcDZLQKEo8aJlEZIY/fcL/aAnOJ0qdUE5AQXDefWHsRBDV9iSYE4bWTMqEmi83t49gb0Eic5mwtyO07LctMuhacsITVtxNw3k8yjDtguKBqET5BauCZWvhIzU7KazshvFavs+HqhDSs0yfk1I/9FJ9d0QN6zjCN9lEqmTGsupn5T3OO6SmeWS7+WU22onhFcBzkHdDuU4UEEIkcUBnWlPh3jiudZ4vmUm6V9ov1Qc55nKVWePTVPzMknw0RmxbAdsoGaidtf3AtPs05hQbZsNRfhBjAynDYqFj3jwYmiiFjUM8KQltJLJW94xgZW8dAlS/mEpwTfBgWH66CGOUxFHKVgRvHU0kjQO18ke8mQPKNFtrfzfEByPoaf8et/7tGtbbY/2Z9sDye7w+FoTLd3dtgO293J9rOX6Xh/Kx2Phi/SAKJdjyFbw63hxnBrY7hLtrYPRsOD0ZD853A4HJIPF0f/EzA8oVVuLgFHB2RCc80a28fKGSuYovklz5qbx9x2NDYwZsq3suXOxvo5CM8sh5twpvD0c+3OwTM+AQECUkY/b28xt5qIKkC78wo4TZXUdiO0ocqyw3FlyBVSCM+u4DjZg9TdoX26YxE9aSCivfwO7T5q6R8E/82qpw9fd1CXLIdBvgTvzUEvGzMCXIj3EKBbXtZYnv13FQt0Wiewx5ihd3ZQE4pPoTRDDWLKbxionVS41/Bp9/OM5eWkyi0PtBzArTAMbOaSvHL8mHChDRWpU0Nb4kTbiUGmWCJx2hCptSFWUgWcIYzNNRGMZWhDzmc8nXWnCow5lYWdzJpH0bpPJ5Z/eMEBS0WJ4r+SE8MEydnEEFaUZtHdyomUjV20G7WKXbxYlHdsnxdWdgJC8zldaKKN/Tfg1qryeuZJE7fVWVP4rlXGkho1IojcgNX6WSRxN9GY1Y+ABsInjY2vd6xNAI3NL2g6syZdF8XxOB7PjnGvANV/dyKhiewWTHvJMBluqHQr1kJ1QwWtjBSykJUm5yDR71FHDwWh9SuoBJBnh+fP8WA65dIBlkohGBj8p8IwJZghZ0oamUov35+dnj0nSlYgDUvFJvwT06QSGUM5baWvkrkdzHI3qUghFSOCmblU10SWTFEjldVXvY3OZjSf2BcosepKzgjNCi64NvZk3njd2I6VyQIVaWqIczvgIopCigFJc0ZVvqglINgoAVqZ83QBdsGMgcpgF5gsre+IqhgHffQuUZnLoHQ1tsKJBByH0DyXKejGDqLONjl1MXwdCN7tohvo2eH52+ekgsHzRS1xNNo+AfV4Jk4b645Ib7Q72nvZWLBUUyr478Aek64Y6V17S88Da/IyxmbE0rwZTrqWOQFVWBU61lzIXWpNC9fvIthhvs56f5LS0trr10fRWUtz3jL5jupv7rD5Dt2b9lB5uqPaERo33NI8krjfDnfUnI7rgUNbTrEpVRno+FaFl0IPoudRvx9z9IxyKWhOJrmcE8VSa/42PAwXR2duVJRANZgd2OwX9vEIMjhomolg2dlnzv/xlpQ0vWbmmX6ewCzolCgdq+hMhd4/q8I1JvUmqQKdmmkLhzOaPJaMokJTACYh57JgwYypNJqDhqmCrHmXplRrtQNEsYnnSg4U0VqgxiPmfnbmOu7smAVzFcz1CAHu+FmwxNRvcz1FDD86HhwR+QmslKp0ZRHiRq3tZC4seP+qBG4AmM1oCHuHc89gNX6FNJ0hrQKF+7UBJ9d7+oJ/EMfb9PMEjy4cHlTJaJYRzQoqDE+Bx7NPxmlv7BPq5QNUlrxM1EGHM5LccLtc/jurfSB2oUyBpaa5qajbjtMJWchKhTkmNM898XnOb7nmVKrFwD7qlQ9teJ4TJnSlnKbp3MhWQcmYNpY8LEotwiY8zwPjomWpZKk4NSxfPMD+pVmmmNarsp2A2tHZ4WjLTej0nMBmijGfVrLS+QKpGd4JDHNu0aJlwcB9TnKuwb14ejawZjDKU6kItQLkE9HS0klCyD9qzAa9r9aC8BwoOvcwebq/StwXV4iypjYpCDeRsphV6OJFEXiV8PLKgnKVIFhXA5KxkonMqfOoi0tRAwGeF7djtbaU/NsJaqqTfyNZHXmgFobpe1T1aI/Rj9N8rQHIj/YHdLaFCy939tzWI4vsbsn+TgMwJODPcIk5nozjJI2xp0wmKTeLyxUZ9kdW1+7dhTdWt2fO1dcARwrDBRNmVTC9jZwMYbIOfG+lMjNyWDDFU9oDZCWMWlxyLS9Tma0EdTgFOT1/R+wUHQiPDm8Fa1W76UDq3dAjKmjWxRSwu/uN4CmTl6XkQdY072SkmHJTZSh/c2rgQweC9f9L1nK44dt4sZ3sjXb2t4cDspZTs3ZAdnaT3eHuy9E++d/1DpCP43EtH51masPL0egn1NQ9GgbE+ShQe5ITMlVUVDlV3CxigbggqRXMoC5Ggu/Iy7vgAUJK5go1oZRZTu+U5kkupXICYwAejxmvVdJasiB4OSlnC83tH/4CKfXHV0cgvJUmuiWH6zGOfoECBNuUSb/arp9kLLWRYiNLO3ug2JRLscoT9R5muOtAbfzt6Da4VnSkHEy9J+pvFRuzJqJ4eQ8M4YHGLKdnQbfyjA9lwrPTs5sdqyednt3sPW/KhoKmK1jwm8OjfliakwtqkvZie89k/4LXL6ythybL6ZmdyCnwGNDz9vAiWMPkGUumiXPh0Dy22gmaft6707hPCAcgMgCthQk+PzEluaQZGdOcihTO44QrNrf2BxjcSlb2mLbUTbvoUirzMG3TayLaKN6vgsbYsON/L/hAQ/MBSllj1Wf49qNUsK0mHJ09WUYzvH0/ztwe3Eb8luVowxTLLvuUv4fLJmtRzPh0xrSJBve4wDkGAHBZssyDpqux1xnDPr+qL1BQxkTDOQNwIhWE2CTuuSSVxZq14dfiL9o3Oxhs5G5sMmaYKkCSloqlXFsTB9wXFI1OuKaGIKtqnPOU6Goy4Z/CiPDMs5kx5cHmJj6CT1jT5nlCLtTC0qSRaK9/4lZyoXQcL4jmRZkviKHX9f6hkZpTbeDaACON0B4W0hCwteYsz2H1F6+P66vxtVQm1fVaVxRG2GjsfkD7qpwBF/HeAnEHNWVS2SP8W0Vza0uGLcWrJgzpiNSGPPekAjoCYZ9SVpo68gJeq935HbJO4AqHkpIqwyMPFulAAEyC41z2v+531DJqXQqUnsruiZ05paJ2YZEmXQ0iDIRQrM6CxiyX834y7z8TzXMT43ZtPp8njGqTFAs3AhIGngyqzVp0sYVAuFFmVNeRVLBWEJ1hmkFNa7oabyW6Go8ah2/QIOIaPAx5cD4UH+pQj7E2wDMnpGXkPId7D6a47LkttgsIxHZPsICR5SUsY3nu9mg6Z5OJFUY3zM7qCMWt/hm7eH38fIDXgddCzoV3vzbAIo65DLyfG5iAJVlPK9EhSboMsj1vGDa6i7a7BHTwfXNG4Iq3McV6J5Zjj/B9g24qzVSyWpKJfQN4JSIVXjTYyfGWs2DggJOT28QiFeT18eEZxELhio/DUDGtrHdXxwrK88+U9tYQJTCQV7ST7kSWS/bYNN+0a88ubF3XDB5MWnpDeU7Hedd8OszHTBlywoU2zJFMAwfgkf/DCApmXz1F4SJXFpXVjUzyQXa4Ph88Ab7rzTKnxqrHPQSJcC5JkZ/r9sPJukDMqJ6tihIcpoCP2HkwvFApZu2yTpgidQxHECqkWMTx4GhhRKTyQTMX3nQFq+AZXn3AB7u6qyDcUykmuFc0b8xJRdajL0G4TQ9RrSTK7ZYgN0RZz2Yt4ZH5VjjX+cxafOiug6BgLrqLi1gXBdbVXbKSefuO4osR6KFSFCL5gfBgJu+rhGSXZox/C+D1f65d8zEV9BLCbdYGZE0x0H7F9NIOiLHwd+CsDpqQFQIeYib8F7eHTGAqFMGzFK7WYCgwHMRE0ZAeUS8D7z4x7M4b7xB8R24N9J6QN3VgLtdxhCAV5ORoCy0fe5wmzKQzpsEvG41OuNEutr4G0h7FZkpII7af6xB51gTBjasq4YL2FSukCXFqRFZG84xFM7UhQ5gocVHlfkGedET9qvMpN7NXcNB6IAifd5N7B4sdlusaVIewh9yOp3CzsToxtn5RIwjngrSB+C6RZyEVxLGoBcn4ZMJU7B4DzzmHBAgr2C3D2TBMUGEIEzdcSVE04yJr2jr85TxMzrOBv6cE+ifv3v9ETjNM1oD4mKrNLbsa9N7e3osXL/b391++fNmLzhVK2x6EevZHc071HbgMOAw4+jxcoqrYwWbGdZnTRaw4xfYspm1uZOxmWbPWaaI852Zx+XsdWvDFGXU0D7HzWPxgPANwCmBANWvq8OpKb1hrfWPUulpwga+rO2SnPuD59NhLE4DVs7Y2oHxjtLW9s7v3Yv/lkI7TjE2G/RCvkI4DzHFoehfq6M4EvuxGWH8xiN547hoFW9+JRrOVFCzjVdPL6JKcvwpLdXPFzKrv0DaO6Fl4Z0AOf7diu/6mJ1tmseEmWfa0+vV/HR7oMYD3fMuuHTlXc/X97KpYkIev/4ZnS0U2fXaQhUcBTJj4Vcf5vnSuB4TahQ7INC1rh6VUJONTbmguU0ZFV1Oe68ay8LZ2RYtyl7WPZLexkiszdqn5VFCrkDa0XZkxct745Xa192LGNGsnhjasOtAfx1xQtYBJSZhULx+rjllF95haYylzRkUf2n7En8DgpSWo4BwD9B0sFn0uTLRrWRhVsXtsh+juxFBTrSyK8jDLuIuR7mIZKJ0pg9cSzIHSk8BUobnu0kOnVhlO1aI0cqpoOeMpYUpJhfnbnVFvaM6zOFREKmJUpY2fj7xm9IaRSkRhwHgM/av1K/581uOHYedWRRPpjKXXfdmJJ+/fv3t/+eHtxfsP5xcnx5fv3727WHqPKqxEsKKIinMcviGwA+kHflfHofFUSS0nhhxJVcpG/tb9NxkWjWwZCXrH8Vg/N1IxtPrirezZHpLOmldPf7d7SiF0vH79tvcgKRUT7n2s7ADsQcvHwpCNSyEp8kUz93q8IEbKXLvkV/BGQjolS6/R4kM67JDMww4yEOtn4rWf76AnFkRKkwPdMIVXjnRqTdvIGzRjNQ8Vpmlz9B432kD+PWdpGcTUggOYvCPjIDPiL+9ILAkPNpMHXFh/p45HVFnAZS87IAMUSATuXsxFlMhJPEhUFCaSVTOWl5HzE9wHGIkShtbOMSEWVrIaHrSeZSTWKv2T9eJ51lT+eUGnKzVGYqUKJgsxrAiQJTTM6paiDzRDpyuCrKYsBxedtm6dolI1d08flay5o2hN20yDWV39l8a8K9yOetF1+F7QQ5FmV6WI4uikoIJOkflzXRNCR4nCUjkRH4lyWGJOctz6+g5eEj1aF5BBJttIdXLRE1AaqZm1FoDElJ9NjPZKmpzCcqgo+wh9lY2EqIELExuQOgkMPGQu3QWRYpEUVQyhvUlhnlf1rC1Ks7ovwQrZ4CRU53Lc77YUomiCVAptTSSWocyhGgpIxWnRmD/jRh375COQOaK5Yn3bhB4NTWR6moxz5BqFtCBMIoztTXkXgdOMKgV444IrcJsA/mPR/5zHQlillg2145vMpGokgi2VThW0Blc17AulU4VhIa3qKZ3qKZ3q3yOdKj6APqDXlQJs78uXzqmKRcRTYtVTYtWXAekpsaoL41Ni1VNi1XeUWBXLpG8iuyoCaGUpVry0s8VLvyeviDUSikrFb6hh5PjNr8/7UorgKIBx9U1lVUEaT+T5cisFf1iNGyPJeAGYOGZQt/HLr3AVeVIP0K2+XrLUrbT8tTKmso7a95Q29ZQ29ZQ29ZQ29ZQ29ZQ29ZQ29ZQ2detkT2lTX4SgntKmntKmntKmntKmntKmGoFBWY7yz1/kv34NH+/uLLJM8CiEzuV8rKjiTJNsIWiBTguPUEkz37zF9YkAr6b7+Q0VC1epOe4z4cqpSrKmZxRqkTTmWXM9PkJOCBgWXiEfV6GpF2jizOB40E4rskYmMs/lnIvpgYfmL+QYF7CRc3Ht5luQZ1dJludXz13xZ++QkYL8wkUm57p+/xzBfYdBhs+uEi373vsg+KcNUCo7a+/A0gBjkfNx34AFTd+dL38L3owwTr6jEN4W5E8Rvd9+RG97y/48Ab6tlT3F+64q3reF6Kfw31vwZFXgpMh2V8QQ3xzv4hQPgkfP6GhFAJ3/fDh6HERbu3urg2lrd+9xUO2625KVQLU72noYVCvi0A3z3Sk3bbFZl5kvaKn9FVPM06FjqxQk4/q6e2yumRIs395KvOa7TM4bNauyU19VeY4Q20k6a28Bf3Tw0SmWH7HvyvbWx0ctiCVUpTNuWBrSxVYQ53z2gcTTEEPVlJngsrDL7izx097OA1ZhRRQVixUt4DTUssRpOmQ28NmJGYEeiUXJc7YBSQdfVJ0oWRIBturVtmJlHrHYMxoHDt2/ODv8ZW/Xoy+/uptmC6QHrmwv2U5e7g2HyejFzmj3AUvkRblKd9chOrlCkkcplXHFJM5O8KSRQ0EcFGRjA2744DESwUXsL2mzV++EiylTpeLCpYRy1/CT0ImBVh2IMRfR7QtNWM0Me33UGpGiQgdrSZOZ1YFkmlZKWRUTg4Gx/ZZrPwl9m4yiwdoC6DEBuKlNKYEP07qb9nw+TyZcMbYARrE5zuV008wUo2bDmpyWN21uDUc7m8PRplE0veZiulHQfE4V20DkbNgJuZgmM1PkXWkyTPf2h9vpDnu5tTWyf2Qp3X25t01ptr2XZZMHEIjvYXkJh+ELBMAFiv8crnV+dnj69iI5+e+TByzFtbRd9Ul203zO+tYCW/746fDEe23g73fB/4Kidu1uBASHmmh0Sjt+ew4f73CovWp0/LETHr89J79VDA6atbuo0HMWNdO2v7tCRM7+YhzOXOiaU7cx82MtSKm4BNfZlGEfUTesG/TZVSY0FKA4gOevnru2tgs/STw63Ar5FBx0Z9cNht2IOG3I6tF4OUkbF/8OBrQS50yxeu9QTeAax+lCia9ePX9IjkdjxUtnk7VYrSAUnLdRihAV7g28e6XpzM1FtOtipZiplIhuFXwPeldJOtJyGYErpmu2cHip0yv8BiCeNfPt0BvZI+MFOTk6r8Mb3mNLLhwLeC5wythxVdTLwR/95ILM7VsnR+du+Hbgqd1LS2NRM1vsNgm/NFO67HOelsmhIQUXvKiKgfsyjOsXVVTaNBpXX9lZrixwkGTUWQbX9QXlwBoIYUiI6UhBQHKo4g19ozUppdZ8jJd+GXSYsnoerd17ztHt00T6AaWapNiJ1KVvrfeRXZLmdGUJRlgzhGL8ZtgQn9qXIcVA52AXdYiN2joc8fRtL+hRMbLPio0DqCJWh8E+PkKweQgYxYpfPkwaXy2ZyLS/6IRiNsB9/NLjAf0aO2J7NEz8//eudtXFXeI4LyPjqiAt0EmJ7cl0s7ErdY46OSFHbw/fnFjCHzOLLPt+fmO1qYgJra9rcoU3kzUrMVFamRS+Ma5UiulSWhQHr3M0CJy/hJwGniSk8WEq7TGdPkOuoK2ez2G6smKERbl50bZAzNYtYXp+a4xZJmDjtpjVC3+9BuHEN+C+tywaFgwY6N0F7xCl6Szm4GwCDKiR/8a1pX+WJeRXpqSvVVOAQ3HmLviQV9YIHNdYwyl68pD6CXWF9aIuZnWtqEfyEqDNpjuL0Yypy0lOp6u7m/E3q1skZ8ZaKJYd4swEZm5UUiqx12xdVOiAHB4OyMXRgLw/HpD3hwNyeDwgR8cDcvyuxw37z7X3x2sDsvb+0F+63lZN4ItujV0Txm/HV/hUw2VG5rWLUsmpogWSHrrOTETBGNvJlGvaFw0EaeElrxMkkS3oHot4azQaNdYty56EkS++eHc/KgVe4qCihPUm3CXJNRcQXI16aEM1JaRgWtMpS+KgP67hTtjhrm7nicG6OAyquoAZuLqOx7wVR3/7cPL+Hw0cBZ741XQC15jVyQk0L+4V/w3W/SXkP4i8FgixZAvO3Fa9UCHFBrggoGN6OqOKpsYaDs8waHh7CzKeLT7IaGvveRyDK3XjjZpZB4MGG+UyndLSnh2qGRkNQUZMYY6Px8fHz2uF+keaXhOdUz1zBtpvlYQs0zCyGyohF3SsBySlSnE6Zc4K0Kht5jzKe54wlsUjpFLcMOUSQT6aAfmo8K2PAuiMuRu1h0nRsJ+PSXx4tLrTlxDxlATxLSVBBLr4ytkQvOEMcCu8K4Whwyy+o6D9+Xzej/SnCH1kgU8R+g+L0K8J6OuYAc4auluDODw8bObBe5P08nOSRg87Hrc8J6dnVmFjUFnzKvZUXLVcCf7HK++5c7TDJxOeVjk4hCrNBmTMUlrp4E2+oYozs/AmUEypBTXamn52KAdWQk4+GeU7sgN8UX0XD6iZMQVWP3gyI+Rc1bopvWYwuPdOYfe8jH2ybxeWSuKhUS/Al+B3RjWHKMkwYt37HNUVq8lOZE/t7/V/rkXOEWvX1B9HbQPH67tfQ933c/Vnir99B3FoDehWeCjW41MRvPE+XCgbOAxbjRQIrym2oLd8XfUu8uZDGNWU3zANXeWje4BGm3l4LFUsDtPLhA6jTBC2tkN/WShqALx33vnuG0C05pfClzcqmXLrfyZL9KLmCzuEljJIFGeT4bF4npBDkUEzgVSK2jztVOKyh+r2WwXvl7fWmmMGHfoODtxQpDZt3NecHN13X/OGGboRO519kUPnVV6+Pm7vhXcUSKPYbxVXLIN6oV8guubk6DzcfoMAC/i1i9HEyIRcsVQn7qErTJfxYNTcD1Qi4DmVNljmF66a89yRUERpv8yYwD2DDUyV1JGmxkXGU6bJxoZzgrqLCAuQxafO+XRm8r6OCdFq4P0osDtncPdt2FS5m2aa/cuC6hPS0xkraAv/pBFy30M6o2SYDGPKUUo26mmehC+WDp+nIrpVc9G+QL4L8F4EPH7QDFk7KA74nLvOKUsGdbRyhv05LJo9I4CMlpRa8TNHsRO8Fbj33GiWT6KUXIGjP+BObUW1QQCZ6NppXRcggHd62laUIOMDl3ogcO6ke8CIUlx6FutdUo2BtaHp9aVVK76n3MELDPBNoU5iysIdDmDOEmWZw50e+9RqYbuk0L7LzxTL5rBbg9i6cLUEqdaN2AHMpw81IqKj/y96Q5OcimnytsrzMwm3Byf+8Zgn3HgW5XlC+OJunuDOY199XQge/mRuSTTIpbc7sBSv4mnjbAcWcmgfJVBuyBUZ1J3aj61ql1BicIbnLvCaWuV/LQOnAUHgKhbUOUzUhKstMJnEtB4j9DCwE9WLcOP5oahPDbLUBOlN2K4I+yDV1TidJxwtk1CQxI3p76XBiItLcQywSqIfpO5ATcbMzK2+TuOSk7RZnBIn44IbDgHcdqtyqe3aDv1O3I9uqzeFAqRwoS0qrHGWk4JRXSlWYMspkd2C2egxCBo39JoFGo7RHJNHjeOCFRLCQ5i2w/jhshrTrhToDQ88yLAC3O+VYgk5Z7jnV5isZgXXFS6bG9f3AA6/D4WAhMtwwx6OcBwp4CCFQp/GGtwNobxc66clipw9WvfH0YPC768MXLZe010RynthaF4criCit8gpVMQGEqhVyhkVHq8pNWwqQY/344fNtQzjChCyQbPsakCu3LnZgHPD4KsJz9kGqu3ZFd74+HuPBtcHfT0KJnERhTlQWF/DqEoztVFSrS0yNzAmqKkjONBXsx2YTAUHaUIm1qyxuuERzulrUGKUFZrKoHVSgztSe7XA+HCuKbc1diAPPJlxpqhKZ3FMentvanUOt3ttzKdkXEGlpDULXzQiZ7rpHos07Nww5bhda4oDt7NXZOGERVC7sZGdc1e5x8KYkILDzcLdeKGmzDXyrHwRN8FzM9pNufJhmdy13qJxlTpdjT1YbaoP43uzzM0LzjCa53JuIbS2YtrcKCd33JIinxo1Vt+ArQn2Q4TJrqlXmZlV3aJyh7frrF/ONXDarHAMGmwIZXOVp/kE7WXIrowwFxUJ9qFUlWZBaGRMN1qfOYVRk0pEFYMHRLEpVVke7z5wf3iaWD2msn9IRezywC4D+wgFjbxhCqQMRAx7lclrcDzeEuYjJlHPIafH3W3Y2dvZbyIfOdA9vCCrnQtN/LrTgIN0eh+yTZCPc18x2hVMppYgVZScpRgF3mapcwp7IpX9DF6RkpdQQPtWms641SFSV/bs/0AZZkOLEtkGNfFXdWVGB2sDfwAtQ7ehL1QeXT7nHZFyKkhhRbLmpkLjduBCAc1ckjCtO2hj1mNCI+v3H9M4+KQR+J3SPIXkNFdDLYcoGFSMYu+RiytwcZBI4jWTiNUW2BZ4FZCOexKyvzPCjeMSLUgKKbiRddxdPcT6Opi5fsfsR9/izkhyzVhJqhLvA+Cl+HA1sWrNZIS0iUcrWvHEpTQfxDtbX9ZGhRtiX+rWcLS3Mdzd2Nq+GO4fDHcPtneS/d0Xvza9qBk1VLP7at99fjkUnKYVSCYaGME7ErjWxsh7q37IqGmcNSGk8uIGKzPStCFncjkdODsvl9Png3jyIEWMdDrOoi4BHp3XVBZR4TPsrVqDDZsOWQcF8GzI6xfSBE8VDG/1nsbcYOqFoLZCZlVekz4WuMHEf9R6KMmkiWrPx8P0CJuSpjOWRLgI21upZert9tQ2bL3JRVmZS/+joEK6wDVv/1UmfoDqNzzPee8zeFMGNDLqJZxjN3XDJ0bgTi9M26Qk5FOIdXvm8TOzZpNi7jbR1Ld3jTjEPl7kGQ3MLjJvCtg95Z3SO0wsE2p1m0ipQe1Ik7YgQXqzgtN/79WqALiVNXD5J8dgLraavawwCehnqmfkWcnUjJbaHj5t7DdR/s5zuMWjcyfJDDRLoHjBFPl4Cim0UXb54DIAR6rVHDse0dBms++vwx+Pjr+al+702K7Gm1p3lE7ZpzuT3eEwa0ImpqyboL+8TnIRZALQReCqVCl+4wMmGdSCVjR38Z9Gqo6GAbqFr10CysBVLXBiXbxFl15dyBchnypxnLKWxLmWndEb2lQ8QcGoMHEOPGbXWHkdNaghQYEims57beBT4YxKe7rQ6LdmmNZVYTUGIYldG1g7g6ApONnrr5pmSgqZy2mjgIwVNfLa3+9zfdDAFfl/24urv/HbfbWUzN5NRsPRr0tn2l/zNjP6xuxcH431KEMXnTt4Q2gH2vCjtH2TkDbi1Yb4Z9NpZ+K5LobSQOdJ9ONFF2vG9QYIF5y136TXgnbhvN5qQX6Havu04npGaM6U8YoMnIWGd6wVQIBCqzlaS0fFNZIZVjDVGH4KEDRStSIBR2ZUZDlECc7YAq6+5tZUFiY6porZNYOzsv4S1QxAiJJ5vWpuYBQ46dArDUKptLHEMJ8xyBELAejYvx4u7gxc802rnKoQGV+bjsoqVz0qT94umtXQqVamyOIsUU4IxCrDWtqaorvlduYDGCjIq6oSE2QdWUEdXWsiw9BoUeTVFDSBrielvmancBKE155RHz4EVRDk7/OBPzc48lUrkKxhCtZXEeAGtM/fpmc2sO55/yrw/t4ydfbJBOeBJWdhuAqn74Mj/zu0hluMaKuxQ1ALQ+0uk+ll1No349pqJhk4RrFWHpizkLbLsprorfbvAnEgptcozm68LX11iXvTw+rPWUlGL8lw/2Br72A0RE/30cmrg+H//z9GWzv/zzlLK7sA/EQwcRg6pzGF340S9+ho6P6otUDLC3QF5xSrPGsjy5Jl/gX8X63Sv46Gif2/Ecm0+etWMkq2ki1dmr+Otra3guqfsU99wkZWxtpK37S8sRbVY8WNW9+VD7TLmIBI65iZoRCJ/K7UIx6ud2ozkvLcKjLBx1Iy5eOog0iBPhvow8H0YtdTra3VvJXG5RygxufTbaM+aCTy/WcNryUyEEzRaslCy759TaCI4dfirIWYgZUFzomHYpLXbpJogRHoh1Y6iAC/100phr2BXChl5U048iysDT+7PDEU2WHQOvYWtTS3RjD/64J7dR5rKHsUDHIUsXb0SETqEFSFvFreQPGXeIOX2tabOHLEbWwclfWqUkBPNVqEy211zB68aZA7axVerWXqLv1wH27RQkyD4dWla+zgUXfC1s2tpQw/q5nF3vgDq2RcNbqcU7EIWgzYpRzS/jxgJJMMWW1Br+vd0UzoHuni0NpgMStu+L5+HkLQ+s4Z+pXhVKHE9mGy5wvtnFFdN/RrOY3crgXqTw1ZW8e9eVvNi5meVj5Ey4mZU8XuSqNyhwU0gPOFLqzCNjOmzJ6DaxlOlq7GrnucG7hd4zGM+Ayr+gzqsjEbbokbXixtHFbWmhLT57cVOWpso2JUr6y4yvp7GJ3MZ4s4ssxf9neZVNcD23NVakcDvEHDghS0U8daLUYdgYc72MZtahj3F4h7cmcI375q8hQ3ZOAf7o7GvYJ4u+pp0oSLdcXt7OLD1XurmjSZs7E9Rp98YLpowRMNaU9vxgR3YkcxiPGutfogG1rgBTba2GcEEonyapzL9JplRHPDrnqI5gLi6IEjUUEqwXxqZFP/vdcAhpKqkS9vBcTmJiAf3r8mORfXPkL/7qqcni7bVOdHwTKwEHDA0ziAQfpOGGEEchiZj4Og+DSqO0QW8wHYSlZYK4YStpACrvZA7IbrQeyv2dkZX9DGdaaMciQ2YY7N/xgOwfG29BZxfX2pIz3xNs1xkkvaG7H2nutrAiOAsaS4VBwD5dvMUDt+RbTMK/D+RJl0HzRzV0mwNLjMcRdfqA/Y05vcAvulkKpYgshuXcT6W3BM8d9ZBsPes6ABRsTolMJ9aFjE0NLNaDjsceYVlLtivK5k+EJWsO/N6xUnFZCbQAqvjgDSzds0O8TcOec0s/Qk6mUg1lyYLWhKWDy45TDXlq8sd0Qf1tvq3A3s+6PeItYhPrD1KAQbI/z+GgouYnTnUnwAd4L0ullwgH2iqSFSZS5yIjheotvx+G48HOvgvA3XIh1s3bCoHeAXaU+F2bAY6hUmaJ6fhtC86/byl1BYIBgMYcS4AEGU9oJP+UsWH2xAo+B7z5104m7cqtIL7ygYKOwEhI65WTmL+lJrE+vejjJjvxuoA1bb6q0C4vS8sJ4xs2iG0mZXuZwmGn5P/O9JKjN2lXjm67+uRWzs2q5Dr7ESj5uio6w0rkiRq/n2avXRPD0+f95qfe3eCCq4I2vCjSZyLsKMmFdhZXydMBHGTWWJIVi3LzeK2QkL7kqRF02aNnSp1nZ3X5rhjdy912YuCC2+OIsoAi/Q6iCNW27O7Dn9vW4VvYKcnrsN1caS7IGoGYfd4bAg9Gu5UFgHc1MfyRWjmdfLnLD2hF7ffkRiEg+gJw4ssDfnumHVpykrMTs+TOrT1KCoBbXHXwow/06P3eRrJ5WSJds8LLRhKqPFWpQ5T8djxW7QzvWPn1+sPUezk/z880FR1MyE09w/tTHcPRgO15632Gg3tvsb81SZGVePDACEWLmmE6oV17amq/EGRgKugaQfIElhVF0kO0itzHeiC5E8kacPCBN2v3UULuj4aga37TJyfuGiIIW1VHZLQel0jh2fHegaJN7ir11pIJ/zLS1K1lZVKrVMwZ/H9YhpmQ8Cxobagl4jk64jdWWP8A3Thk/96ppeniUsC4GFMd3QmJDDxUbGSjPrjI4iyd2A1Q4fvNwVcUqFSz0UYHySMqcpu9U+ucUuqY/8Z9knxaLHQoEpNne3Xowylo03Jrvj4cbO1mh/Y//FZLixQ9Od/RdDur0/YXdbL54eJtxdMbkMi1f+8x0JFodYYrkVjQ/FXjq3k5DooMnY6kXNUEWXMGB/hchNHyJvx3YL9/v/CmpQu+pwTu2KvIZwwOG+we+Qz0Hwn6nINqWqF0saMVcDV9UkuKjHC5zy1N+6kDf1ndc/X52++R9fLVPX2QZWyPKU6ecJvuyST5zDrxWRD54SyFhnGWKztR5/HKOYBOfVfFDUPkYCfoZisv6auhgFF7KQYyl9P3SvE997e+ut1Bg8CGVhwQuFDuee4CNqjOLjyqysVVBd0QrxHuaLxX/40vXSBPZ8Q9XC0kZoBEZ+ZgqDJKGiDvs0o5UGTznUQZATJ1ua3NpyheAN8tkc7nhCge8bNoBrA8hHzwZ16zUro6ClSXxhxz6xtDJsQGY8y5gYQDAu/itFvhg4Djkgc8VNj5d6/Z9r/tm1AVnDp+/tePTU4+apx4156nFDnnrcPPW4+XP2uOlNLHmY7gB6EIwDyiCUDF9SXYB4TiS2xvtNZSGNgie/lHZTKwRO56IY3wV5eP36Dv4WyhrDMG4DUXOoSvDjXBV2qitn8nF7VpgmV7CK6NrKpZpgFhGWXQ9ePfvowFqaaRjOW5Me7rh4ewtfjazTLy3ijmFwFwahWxfD5rYOJTqjTRC9srMElHflrdc9ZkOthmC25BJYVFx5N862zhS/iQJuoOqpcy9EJn9nJZszWbBNmnsMhxXZ4S5xmM9FfS8RHytQObE66x2rbToggAErlrMbGnmU62aLvTGbUZJOWTJl7Vlk9A03HYjJPDj+4xq2y3IfQM0KG5ggbwqzDAj7ZIH34i5nFP7O5B1hSgHJoB80auaFga2J6cx3Q1Uy/f35ADDf4PmY4CBi9IZ7+Gdr09/XBoDfNRxhree2uXT+Lo++6cqq5Z4pXlgBhR2ST4/Js59Oj5/fecTXR8PhqMmIart11RC221n0tKttH9iv2t3tD2rh9gf2afsDm7HVGSqrS1k+tWPXvmvPUZAb10zDu7jaZ2Vrd297f7t5WgpesMsVFmB7c/rmBLMLvDT0OdEALRirzX5wimijGIXQq/HCRC6OSkNhkqhpEKeCJlJNN/EuHtKiNwuWcboBHur47+TTzBT5P08P3x7WImky4SmnOfqz/2fgRJyv5pdgUayeDEurF5Vgj4xdtcwwJib9hoyIaOk+/3RZQVWsjpLeWEKK0c4Fkak1JwJ10d4CO+vDvZ1hi4Q+U1PuUZSDhkshwB5MmuYxW2Hjh7ftFoWofISqVrVg91kwaI45pbCDMi+k24JUzsXKgjXRrW0nWAfPjoJk2Pvl05INFL+V6lXQlBH6MUb20aC1YUGP6lHKG7pSFim7D1PKN2/b46f+jU/9G29f7VP/xqf+jU/9G5/6Nz71b3xA/8YoMo7//sC42B4/jR3EHl8wNSJKfxf7sFAZgLpsLoCIa7JmP/aUfx/tbe/vNABFcXz5nSlXF6hEgHoFMUiLAkJkHlUH9NFKLBhQz5DaMq4gsMNB8rxDZSEKI8QkrbS1k1WswU/1AfxUqg6hj2rRPjtvObFQL1/GlfVpd/gyoTmcQsNvkFmt6hr5tYsrcBefJJrXRSo8Oz98+zxB+wgM5hC20HdVSyszw9B86MQU3SXBlo4r48KX6oJbrWL5x2/PSbxiQp5Bfrw7H/o5+odZQXlev9dF7F8SllNteJqkcuk7KsA917piKkE4lxUVn4N8F9AFjPbZ0VugGwsE3MZHKAzI7azWVZoE3xj5mU9n5FDrSlGRMnIOVVHJ0eHjkFAJs9TdyechAGYhz46eYx299vo+nD8G+KigBMu+hMw/jgd0+3X8mP06+uuH8wF591e/b6ciHZB3H/7aag41IEdv/3rH3oYj8ll7nMuU5p38iS++yX4az1deP++oQ5YMLEf4O2fzx6xEqikVLsB1xauJp9Lk2bvPOLSnIv3cxdL8shJ8VSph35ppTuyMdukfHrH2vi5oD1w/VB6+lOoS1NHVJTQGEQmVjiH7DOcLAvJiQM5BRTnrkPQRzflEKsHpg5YopLkE82+JNd3mYb3oVKKOtwYqfICWDMak0DyDjm0QvtLZrq3h1nBj+GJjtEeG2wej3YPtl/85HB4Mhw9eFXZlXeWyMElliSWNXm4M92FJo4Od4cHW7iOWhC2pLq/Z4pLmU0vrs2VyHh9Dh4d+/OA68KnuWFcB+2dds+5he3/+MLkQLSqt1M2qDhb0v7Tj44J8ke48tw+k7qd6WSQgGCMPgvCDLnUeN/4OpoMEwbUpd7dGj8UE+1RKUefKPcb2PHFDhA3MGDifW9sXgjOXWNXe7u72C4/1dhmaR6zyM61rSBy1trWzfKLd0yVN0ebmpquubw1dGeJlYdZMcZpfYnLqigjUFS/Eqeo8WF3V1Nov7aDCQEivTBdRCbBJXGYT9ricUZdoOmg2q0ZXng/gl2A65dAuR2R1uEwYuu6h2sHu7u6rH398efTi+OTHV8OX+8OXx6Oto6PDh3GFEHK4ck532uzp0ghkDnGPETf4hdX1ZvG+uPaFgIieQMEcLshPkrymYkqOIMaZ5HysqFpgjwTv15xyM6vG4NKcypyK6eZUbo5zOd6cylEy2tnUKt3EIOlNixj4J5nK/3i9vf1i4/X27nYH/xiysPFQPuyM8j/GEtXBFPVgtFelZ1SxLJnmckzzoM0JtvTVRGuRf4Sl+ZmGpgf+a1qandh+57rB4li3mJrnF3+tVdEBef3XcyrIK2tEcp3KyBQdWHMkAcPzy+7vN2NlNlb+qKX80WbmbQeysYWfvbJvwKZsLfRha/kz24fulnW16s/f66tcO6nTRzpUt3035CFCk+Fhc3mhP7mPd6SF/sRk3IkvpUotsKQoJjnROuAKQpItrFGblJBb0cz9BeV6ymR4Jc6eCl2LsTA0FsBg6QwUwbq6mYXs9MxrdVK5+1y1oauyzHnIlViqQR83i1XlGx15Rti9eZTCKEabRcgwl5qJleU/vW3kPbnJut1ipTIzcohttloAgvS+5Fr2NLX9MihzCsLp+bv+XrZHh70grWoHHTi9m3hEBW1lO3iqvgeUKZOXpYyjSGKGJsWUG+jvJjKSUwMfujcs/5es5VKsHZCNF9vJ3mhnf3s4IGs5NWsHZGc32R3uvhztk/9t3m59Ad1o/YM9aj5VvBVOQwMKBj7PBYsryAmZKiqqnKo4ZdHM2MKyFoZMJboLPopbIESX4Fy5As1QYQf7u5BJLqVyJuIgWHndqnQIXk7K2UJjIU7Q2gbABlBgNPMDokqJ4DXgwtqZsgAuF7Gx7o30WGojxUaWNvCv2NQKjhWeoPcww10HaONvR30wregIOXh6T9DfKjZm6Q99eQReToUvbpdUFzPmkgOiBpE9ZYzgGV0nbbeSZeJyRsu3KW506f/igU+NFjUhA8qEBUNVsIK5YmJxydZGjUVBXh8fnllJeYiVX+tsKoQ/7ttyW0OKL+3X6Wkdi4vCMvguz30zZOc/ho99rpQEgJIfehqUOPr82X++p4HpDHuNAHnWFFnXGoPfg08l9LPkqh0OBnV6gl9FeZeBfZ/5nkNvjncHkCDyHOi8VMxx64QcZpkHYxJKXWBImxtivICa1Cql2gfzNoFDZky9r8dV0YfagJqVVFEjlee4VDeq6jzTgl5j2ZQBwfqHM7p9uTvaev4Ale1rp/J8/SyePyaB52vm7oTzJHWjI/DP/vOd9WqgOEy7Xo0rIA0hcZXB5g3aUBEVzTs5Ood3k7/4Q3Br0e1ufReYFMr4upuv2L6JqvlKhYbLfS1oYa0upqcZGT+jKptTxQbkhitT0ZwUNJ1xAfE5Mr3GK0NDuQAFyB7F/6rGTAkGFU5kxh7UC/bWWPkvIv/ftao4N+brBsjv713u7fxREhZloZxEe+dJzYvZ22RsnWiLumcaq692kPV1fZv0DSNKRd4y8+Ppu/OGXIaZXnNRfeoZuwY6mimMCHLfFynvyd999/bi3fm7gJl7nB9TJpNvyGAGcL51oxmB/OYM5xisb8R4tiB98wa0BfLJiP5jjWi7B9+iIR3B9Uca003taglI7iTUn90YsYRp9Butu6KHSrdzX3L5ykNwBYaKPY+KmUoJ7a08kK9OvbnHAP0y9VCd9YlyPa7/cqgDvnwDJprP6UKTCl4ZQMlHVzE6OBEKRgUXUyhg7rr3MnHDlYTE6LhXR+gkgHE3CiNRXNuoqzGjBhjLVRsL5T1YCA80213C+sp2iHawoWi6AuT+7DbztllXdCoaSlyXPuH2wgW7A2VGVBlR4wfBP/mC8I4hQmuq3yqaQzJ0GDPSzUDdp8ha3XVIHZ1SaaYSV83dGskkYynPoEGTVS+BlGomLu3zrc2XOpnQguerurZ9d05wfPLMX64olkH53YyNORUDMlGMjXU2IHNUb7sJIPhkB+4qX6Y07beSeNMxU3B3m1nNIbsSEwBvUVVpavH6Rv6L3rA2VqLeMyvYzfYacLYANpjJis5d4f0O5DvJTjLcGI22NsCW5mkb+scpPt/ansYVBBxqbtvE/25jwHsjv9YO+vnc+bT6mtQDUo0rYaq7ziRVc945k6tNQu4AvyzdjYbJaCcZNaBdWTl013S1JSashX2UyyoLxrK34+umV05LwVQqaKx7ZbaSgmW8Kq6gucFN0epu1rDUg89mAJ7b2nXgk4rjq/Barwgj9ukXrWrg5ZJlQW4LID3H5uW1ZhaKPaMbvLlt21u7zemtvPujLkQgL3CV9yGwOsh7+0zbz5p+zQS6pDuRFZ+PjGT7w/itXdi6BrXJi88JoTeU53TcUwzjMB8zZcgJF9qwFrMCHODty5/3hi1a5Dd92RbB+bXv3VpArLLIhMMU8BG48YL2BgpDmhq8eQI6PzIcQaiQYlHw3yMDAVEYPn4IDa6uYBU8u7KUgh+8dYz2SSrFBPeqXVhaZK7PbxjWl7bqIaqVmM5dUnK7BVN2gXi45+EP41znM6l8qQUoxV171OvFNYo4jdvtveE5JfOV5YqHOvdAeDCT9w5CIa9mM7EWwOv/XLvmYyroJc0KLtYGZE2xUiqrrl3aAe+tEB98SsY0IjR+vrg4g8+339i98vfeITjQvhR6G0GbbHQXVSr3bVw0wx5uJqIZux0q9yt17R+Xj9XwL4xltkjiMncP7PAWv9oko7iuRQtMArO292V//8XtILqKbN+RBnDhvCa4wXeu/GeW55LMpXJd/zsYWMH+XEgs3n3HLj2zwAK3nTFqzYCubTXa2e7ftIKZmVyVIF9voBSnimTMmeIS+s2dHJ2TUbKXDF2xxzyXc2uTTSueQUGCOQ1dTLKDeoA12Lu6gxIpKg095aP+iUaG2BDse/NbxdTCmnRrDT+qnNRgoCstzA43CqViruEOS2nlDn/obembbTcKPMJ6fV163zEShG9BofW5YdAuNiHkXWMgX367oCJrNCHlAoDcSobJsHPx8NPJxYCcvTu3/36w/8jzi/49X3Etz/U33FX+8JQKBNpmgWFVF3V6G2xgT11+qrE3j7dJoR1Nl1cNIpZg/PNXR/jCxgVU5MEzkpAjWZRUeTdZEYNMw6BRHxwSz7a+rkk8rBvVm94zlpdut90uwzSK0bhdDyEF16A9TaHOcppzJkxPdwFe0CnbnPKlq1d5HEPnXrVUuP9d1t97N0zdNyo+2B1m49PixrmcNjpHtWDUpRSafXXRhtMuK9tiIL9/4XbX2m+Xbh4HX1u8OWgfJ98c0H80s3NgfDluF23hF2R3btQefoe/PIbhNbhbGBU6gaovw+UccrErS8+l+uf3P26eG9e7pvdufWfYjAFbreMa4LrtJmAEjum60rhhakJdNpszgU4bX94dqB4GiIPVfUECxVKpMsLFVDGNQcAM/2zOSxquAaiTh9Yc3j1S4ZvEqnZDXqJkBZV2c0nt4citUqaeh1HrY/IpHJMw1oyKLLfESENHvlQKERSvU/c66m9uTOr7aIZhahQgcH4szYSWyrURL6kgdkXP8UzHcCQOPz2o6AnnXN48pDmnqzLeA4ngLHjRWu9Y7YIb9ATL+N2rVVffYtolpsJ1gkUlh6orAyIr4/5QJCt+B49GCh4lD4agRd9VjHtxWa6xMrdlja/T4zayGuRdY+v87Zuzzjkh5PS4R8ItXWVmhf7O03gv2O0U0a1tbmb3wF+no01jPvXafbwjtvq4E/YcGjr7BnUFS2dUcF2QqGsdFL+10EeJnsz+WodaW0ZX79a94dad6dy4nldiPyvfCjTMH/nAmi567A0eJsJO6X5MiM6IW4j/5aqxEP9W3WKgp+d8a4VWjbCLYFk8/l9CP9lxZYii7uLP9539C3iGuXA3gtZARfQ9IKAbKqY+ru5pq1Zru9K7RSBU02z01i0YBLy3giXCAbyrFPxSJeDroxy3j59TLdbXDTTGxIB7GuAbkExiT3lHZXc26N28oWozl9PNSSWgkK5O/MFZgkPERaC/6E11cGPYVYX4T78N7Y7KDjfNDl2IKefs0Q5BbigFllFlDYbQaN+06jqB1BWuR9JUQqICkjEMgpfecA6iZv6wK3hQFvbtWrH2ffzLysSnJ5xdy2U8MASagqCC4Jq/+5+eR8s+hx7auJPIYq7mVImrAbliStn/4fBPrSPQvKf7P7TZbG6rPbnqnn296/RcNCNu3YBOQkODN+xlgrpT3RC0AuYRH6B4lDSn2sePccEN9565MAPIfN9UmaSVNrLoD1SSauqLtGK58GQspdFG0TL50f/VQAq66KCgfZJzsYxktAK5RmQHQ3YUX9opLtfr7sO8ieXIC4KucPHOWxg79FpHo7Xana1bl7JCIb/eJoMvtbrwfd3EzDT6wVn2F5JgfRvLmIljZCLccKYG36sn63/FjgvHP4iYnrMUSCf5F72hvUivRLrC4i0dlLvpXP/Hmcw6WL6HdrgvxNJcCF0J3/esoOETt7AVTEO4MFwF+1BrH6caPxG2Eas9El3m3GBGnCFVaZl46GxXUmXicP1TjJVV0B8Ipf6VG9bfzCHy4qhaKuzuQfmzDEaszb+acN0og5hOG8vwix10FpS4MN4wJvRWoLmV/QuirQzAjkWpM4go1gHBKC0mUglaiVREsDnwHKtsF/KGNUkeur5WZRvktsOpccag7B/LYFcymV66AHErijKu6ThnGdHSYj6lIBrHDK5N4oDisY9GBE+WY96KGcVZqINydYlsoufEnbOSjF6S4f7B1t7BaIjpGRC+9WZBalWmU6AwJH6CfF3iNGLP/tvOnBPTocVqrIQMfAfdoLyh2C+4iZncDadumISc5YxqRjRj5P2rI012d7Z27BZuj/Z2kh74kwlNec7NIlmF72o9WqGrF0j8hB29rB34FNZ3mKZSoYYso1VZ2rHLGsTVCWtfBhVejJIxM3PGBBmGIe27W9tdotjavhNHK5R5EaasirmBLtilkdVaBxDzi761lIpLtVxJs4dtdWub/Txdgn7kFrN6SK7JPvlLjZz/DFpu0uQ5ofylfV8hX2efSpa6iIrAih31BEKBmUcvRz09M7Z3+9AaAHj4Mbr3xATtfukT07D5nKIEZU2hcU3EMGIzp66r0J645jSApbZ39PT4/PkgtmisSdIB3p3MqbSId4a7//EquRN0ayCB2PAGkgVWGy5SE9lh1lCyUkCWaLFE/WVTWaJzqGUU9YLS2fJenhA2fNV68B9NDGHCZubNUkQADvFbKCAyiP/AzY+g6Oz7ibNvg1sTXe6xc/Bt9NU9xUy8w75ZgQFvDoqiEk4NQ9eRvIEu1lZlpHW5B4LKGI4TV1DQDb+be+JR9Rr86D7MzA1LtZYpr1+0uutNHUq/1EVBbbmv6rgcogUz5TdMYDW9eFbnwymVNDKVuXMfeKNfjblRVPGIcLBVq5XCGHQgphp14wI6RDF1w1OmB6CI0lxLmGyBBkD9sL5elJE7h6e/DazkYmMprwfEzK0upxww87j7qrU4NDeV087rnuY3TGRRCAd08wFY6lKAVgplofQflgQMNvNmxrQhp2fY3kcP4MpID+KwkDlXLNROjGTqZwQ7Qb1irL2QVuEaJoyt8UKMrJ36axrLnE6Oznv6VlFeNEirJyygY1U+JCRgHWMCMBYAO9QxpXBHxtKeG4hTt9vS5LNXiGCMU7gCJeLKItvay1yK8L1i5FrIuRiQK39Y3U+oqvB6J3RV9Eikvf0GAhwHMYvLld0tRe0EveNeQA6+Xxw5PcPLV0dNVJM5y3PH5MJ6/PGrk9qb/C+qJE+MlPkGnQqpjZV8hoqMKqAx35s5DDvJm936+9v/RWWyLYHkfDozmwF5GzzbsEKmR+k7mL37T/125+f/fPPT7pt/bO7PTtV/n/2W7vz6t9+Hf21sRSCNFXg51o794F76e3ZtFJ1MeJp8FO99UXGWkdqqPvgoyMeAnI/kL/66/KMg5C/uvhz/5mIsK5HhB1mZ6BN3bfbcS5/8p3hk8hdSCSDuj+KjwK7UtCztYQaJof21g5VqzsoppOBGQmiIu0UfxEP23EfULA1qt2gCdS0sVm44mw9cka3gHdDk45pf8Fo8tFTk45pb/VpyJ7we1VKRkileMMNUB/54bL+Uu+FvAN7e1jBRAx+9i8NtWhuQj2th0+BT2LQ1t1q/bREiko+i9og2XnH+GivvYNYAEYEpoPMnFlPiGj2nMaTQLgIrYbS0HG9pmbmELdSgV7hQijBJgo5aK1wbwyKY9UrC5I0Z3aHomcsXIogH9aN5B14ExEWdlRjlIEYxtfbb0/MzTaSKh/z72dsgmkOGZLLWdZQCLhtsZCLVnKqMZZefU8qg7lKHN4SR3zz6yblNSyU/dWPyRi+3klEySpoXAZwKutpCzqeHbw/JmRcWb9GQf3ZvS30vXjYQuO4X2Fz/eW1znDuxAupL7upi+7e023ya86lwAg0U4LfMvMrlHChfw18uUSOMm8upv3Pywdp9a+p2R2kiWizXev12J6MzURIYKQ4roFnmJHCGvXQt5Xt15Canwj0cO3vrswVRWYKpwtLZ318fvkUK+22Di43f8AtDMRiBa+JqNybkMLfqYZT0hfD4m207bcLRLwx/uytwgD2CqRU1YHWJWne1cGgmMhdiATwANi347/eHW8noN8JESktd5U7DthZDK66qZe7+ytj1gPzCFdMzqq6T5wHh94X82AUkbnUrOjGA827gTyMIrHO6l47piVawQo/HO2e+42JuC/G5dTkPDMRadV4mGqLjBZGQ5C8V0JizdHRdVcofuvZyfoIMgF/4hDfALml6zcwDDJ4+48YN8ijzxr3bY+DUv/SYOP7H2hZ2xk6/kbPVjGb1LHkFevX66xeeTdb2CXIe9ikB62FAcmDX/6KptdpD4FTwJnx7VnLIOQxx/h7qVaDw3J1Vv9mRhoAeEkhYp1mkvf4XzhMfQ+I14BrDOV1YyV9l5YCYtBwQXt7sbfC0KAeEmTR5/u1h3qQtxK+oLIcLHX53fkreyIzlaGDM4/IZnqxfWywmFnc7iMHII1Vqlg5IyQtA6LeHTgt0A5/fsxz9M0jQENDhRoGnnUf8XfzdXfWIo3jkdlFi8PTT3POSQehWjoXDOo7kjIGJVXcoNCw1Az8+xnZh4Ou9I2401XjnArByrmBG8VQ3e7KEUjUhaMyXIcZBIXsTCh+4pYLlGerDdJJTjCSqEssjgGg5MXa6xJfKa5dF9jc0ekDmbAxGHpjsXBhVQaGhkAW6WSpYL4zrS7p5fbj2cfzgT7BVkN2wMUjRjBDRkEsNBkBnaIvVw7M3IR/nh5rtBPqM7jAopqTecoXh5IbPB+ATQkVITwKs4zp1oAvtw6CRNnSt/N+Bb1iFGxUjoxRPE/LGRRn9VrEKByYnF6+hqjZ0z9TB3VkqmTL0pTjiCsOE+u+KodOlbgfr8aFdAu4D7l1YnPbxOBPSn+nE5dXMJNpsdQoJ3HREeRJorls0QEmbwPYt98ON/12KZn0QIwkGavLJwifweLcmIeeYDkNV0fC31fLEXXW0DbhWYoy/CsP8GGuX35If46L5DJtKxX8PvqSlu3rhApKAkuQpT+bB5lkHh3/6xJnOir/PTJrOgr5nhS1ewneut3UWZZnwqhwgjg0Dn5eTcJMUPHJ3rI4YGQ5UzIMhp6i+cKSKQbykExZ+ZNck5dRdYgzIifPs12Lo+M2vA/Lz+wF5zab2CWtHtjF6hg2mcZjl+4c+Vft/qvb/cJB6N/Sp2v9Ttf+nav/fRrX/xxZ2j1NqmsK7vlj5ggaaL4KwegvNz/T9mmhutCcbjXxOLYMOEv/0Rlp3yd+7leZX9D2baY01/GnsNL+qr2iocZHKIg6deJyhVld3oDhq00hLPLvqGGlgnIVR7zHSjt/8ujQqHxdHVcdJ1XXB+gX5arrDvDk8uh2AxvyrTEQ5qjPiu0gIm1VH7sKD4HV3IelxTH54sxGB7wt4RRF2tbib1LE74XohuPwpZrKyvC4Lhem1Uk2p4L+j4tyIZBAyTvKHKEfGMpY5LR/TbBGunE0MYUVpFj1xwZcQNHf+U2MjnvrPPPWfecBuPvWfeeo/8yfpP1MqmVXpMuVJH5si7Wa4RRK1QNRbw2EDPs0Up/lqA5e9Le4mc5Z2U1VYWZ+eWbMQaK2nzRh6syBmAdS7iZJFM2pNuRZ+Ue/zEBBdj7QomU76Sgj5kHV1VatvV15aQz2hTMP/lPA/IDnhD5nnDKoOoT/A/lWHBfTkZTas4brYZZQU9yWR+ncYeDmCO18UVJiWh6n3/H6ZLtF+UyKGWBdbqXUfeNfH57S/vydtNR7Hx2IwoXg6Q4KCIIxGz42QS5rKoqTCa0FWrQMnaIMYW4mlcR6rDtU+rWoIGb5UKSqmEFEz4blhzkUL7Q680gcFOyDoVsCDXnEMYNTreUh9uD+g10xTfSUPV/W/GZEe05BXv2oJ1yDPII7OQRzdQ6IXEP7o6cSXc+gnR9mSdMvXOP0utfknVb6jyn/Hevz3duK/sBL/HWvw37z6HqeV+DpojhufRV/dyYRrWX07DwbZrA3NsbgXxq36WT18p6YubwbnoN3RC4fyrw3CrRISWMQgNP89HhUKNIShHSA4pgshrcfCzlAqXDE/oBq2SmfcsNRUalW+OLcnjak6u/tpf+9yrxk0P654nl2ulhrXD10qYe+uQWsCC0W9TROXSOjIIvCZQBXhm6gsccinTGVRcEPOfz7EkACB8dsMkrL9ED3FEyY7kxds/2WW7Y3Gw5f7++PRFmPD4XD8cv/l3t7+3osXo2FaxyTc41hOZyy91tWqeNORG76DLL9C0BdvmAqV/Loppfvj7a2XGX25/3Kbbe8MX75MX2T7NNtNxy/TlztNGzmafEUrOm6GckDucZMLBMjflUyEmkVKThUtwHjNqZhWdu1GOpLScCW6qVjO6Thnm2wy4Smvg7VJHSrf1OsRnZc6lSvr0HEqMtgaMSUzOY8XDDX9wo66yLVKM7UB8SMDMs3lmOYdvODXfQthy9gpGTX9zVos44P82V74mpjLecqEXtmVw2sc3pUBx0TqNub8YW+2jSSU6NCa0OEUAoTciLGppWRBzs+O/5v46V5zbbDWTs2MpNZ8nLM6/VyX2SdIPXdD6s3nXT5zWNJ0xsLAW8nwMRrd54iIaIqacmRTsVqu4vnjoDCzqGqR3zfeIai4qnil1SaQ/uYRy3OqNqdyc5SMtpKX7d5NUJ4sXRUKf5aFBRl9DWEy8uH963Dt5DUYKFrBda2S8LqM6+0VGkNJGml5mSWmZeWNVWyWWPWDqjd6imm0QerKka2t7fsajn/B4nfOkdnVBeDa0IUJeX0zJjGstr8o2cD3CjAz2nykoILWFbaJy/b1OVQHRJXFgGTl9XRAxorNB0TYL6asGBBRwdf/oqp75lVZLLuNq9XE/IY2Z4n782wlL2Plv6n3n5CfobvSYzT/X9A4ImdSGUv65OQTSyv889nZyfNQ6/abUquPzj40piGGqikzwRkHxbs7avbeztJaYsMZupIwIejeiNM03NXY3MF3ryTUwFM8Z9C3oWuAQ3U7OTHkSKpSqmam5T3LXL32GJaaddXIB670jMbh0feszI69YvMpLK1lHz1wWXvJdvJybzhMRi92RrvLro8X5Sobhdfl48CIKaBKHNZ/OztxpfUPhYeCbGxASxd4jERwEfuLi8zw+b4TLqZMlYoLQ8ZcQE0qSK4kdGKYggZhFl1oi0rl2sSkMmMbcSMS4opheLNVY8V0maaVUlY7RyUU8+vTGdxEQIU5o2gwewF6rMt1bzm6+XyeTLhibIHdKce5nG5ik84NxbC9xObWcLSzORxtGkXTay6mGwXNrd6xgcjZsBNyMU1mpsi7AmmY7u0Pt9Md9nJra2T/yFK6+3Jvm9Jsey/Llu5058vMX8Ix+ALR/YHWP4dTnZ8dnr69SE7++2TZdaz2hjosqu+a+oGLWwt8+OOnwxMvVeHv9iXJ2t2rj9ae+vBpL+ijr+6+CFzKw+en6L/Gs8c2XOVBCw2oiueSn5vd+aDIrB+O8GwzIrmob1FodQA3QVd++pJnV0RODBNEG7rQvkcfTkW40SyfECrC7tpVlRzZiX0Q7Wtfqw+uGxDcOgVjOb1luqp48vXQ2d4jiaopFNrQA7toaFKPeLQLomMt88ow35mqZnkzRlhQ0CKW9Qa7RuM9K2KmVNJqRxC3zw2/aaQHdHnP+j/XwJ4bc7Gp9WxtQNY2cvsvtM4fkLXRMLH/N9rzffRjvF1C6tXDDJ2WB4GJqQkix9OGHRsukhf9HSpq4eKjEX1NE1f60a7YfhpX6TUzhAqaLzTXRAoyk/MwZGHVsLAnZG7t4HD4oUc/VfGRIW9AOoQXXNfuqH8Hd24kVAx0pUueclnpUKy5uwUPUE8zdqn5VFDwJ7NPXN9bYWosZc6o6MP9j/hT3BKHT6CrpZshLgrXoRujKrb+SMixQerKDt19/u2UKYOOWN+rtSc+NqIt37AvVYvSyKmi5Yyn2FlL16c3HvWG5jyLU9ugkV+ljZ/PKhs3jFSirpTh2oj4V+tXfNJmPX4Ydk41qQQ4t1lP/7eT9+/fvb/88Pbi/Yfzi5Pjy/fv3l08dssqSGxaVULYOQ7fkMVwewzVvdUXNX9aKwMkL+WRveMsrZ8bqZh2ZbHqje7ZPKuV8jjU+e92x6nx9+e3bTq+51mOVUug4InVeanImh3ukEs670tP6+gFlG32NVYtZ2L5Ai9J0G+GVNqVFp9z6oGyPxPN/TwLgpX4lGOT8Ih74Y2LVeSmlAttGhIVzJCFb53dNAS6Z5M29uKeg/dQPBUFFdnlko3nVhs/0NMo08GHLe2AZEAuuuZiTja2w0C8MhPmittt1soMEi/N81qqtpsgdsTtZ6g7sa5DNqDAuSJBxVl2wzBGboV13G+PN2sr76hUN1MNkXmgGHN9Xeu0IAzGg9s6rPmn4yjRWmBNyBxSQxrdDuCiABK0PSAYCAOH5MOH0+OBtXYKKbzRQn76cHqsB7EcpFGN+sIeM7vUfBHKxWOF8VCTCS6Nu6s+kkIbVWELeepsgXzhhosxB7kuloSlIKWyzC6FK8mCGz6NhenZ6TFRrNKsURa/rmPvi55NoHMSLg96gFjTcEAo1N9uhzISn2VrsSe16WGq6Va6s7ubvZy8fLn9YnfpK+36DP3hPGP5mKPDlokT03TDxLnj3LawwM0jWvp3Y2jtQKhyNG2RuoIAtjtg1rCI6oz1FhWNOpyNrfrshFQI3q4n8+caO8VgBePYB2D/A9y25/JytP1iWWKxRy4pst0VMaw3x7s4RXdSPaOjFc16/vPh6I5pt3b3Vjfx1u7eHVPvjrZWN/XuaKtn6u8s+HDdCwgMD21IfOhUTVIXQIMRJc4yUETzgud913ptzlBSZY/nk3vnYe6dZfyzNWafHEBf0wHkEP/9+oH6F/DkDvr23UG37NyfxyvUv8An59CqnEP9+H7yEd2HridX0XflKnL79uQxevIY/eEeI0+L347jaDW+oYeg4sl7tDy2vqoT6YFgfT0308MB+4qOqIcD9xVdVcsD9004s76Sv2p5rJQs+RMEWdeL+TcJt64X/OcNvK7X+GcPwa5X+hSM/RSMvQyd/GnCssOK/h0DtLt4mC5lzT8oxe+0NkLdeiF2ObpiYrphFo2ZHd8anQ9Vsco29Hc1J10iOTFEgXeLpmztbD0UuA50XyJ90g7tMbdOyn5QRw8EFcyrJWC9NZ17xrCWRbytzmnWvW3ZGo72Noa7G1vbF8P9g+HuwfZOsr+7/etD/YjAM7Pl6kg/CMsXMDA5Pf4SZOCg/AIs04HVW4sIZ9lYuoq1B46bb82DEowUgK3lW7C0Bd8P0I2GVksozkt1oD7Msz2iAguyjBnJ+ASyq81BGDJusk/JWMm5hnqKBlgqNw4I78eBvoZ0ygioBsLk0HBZRI7xZfFelRbyh9Ft0y5lqRRZk4+Gbo9V2a3Cs731UO1wLpXVPC6xSbNUy9g4X5FOLDk4EEkAsX0F30bD5kwWbJPmPGVLY+PPYbD++1iqf2oT9d/ANn0ySsmTUXo3gfxprNF/ezP0W7Q/A3Bf37oMU//RtmOoAfQNWYZBc/wD7b4WDF/TqgtTfxM22yOipL8/g87j548z1zwE354xtjwBfAFLra7GNuXauNW70hLv4+9ury3xCmtDYC0IUNZ8/Sg/gC/cLYVevmIU1JeCKmarUlffOWUHa6WRueLGMFe5Ykw129shTKQyg+K7YXNeSRUWqLoLrGvQnjPzd6sjnnyC0LT3bPq3iqmF+27QDLuE6hS6RFqWdWQV9H/FaKurvLy0310lIe5Y+lZm48p4faMec8yMV41vmKJjnnOzAFjqGJI6QtGe8PcnP13+ePr28P0/cOUs82puR+n89W8/VodHw8O//+3Hi8PDw0P4jP/567JKCmwxSo37ItTvbDN7hAGYWPfSbiNUU4ZxXbeLevvOwoKpJpbnQZZG35uAf7cXfqMT2H4NfTLDkO75QAwwJXlmkXn+6wCQevLfZ4dvjy/Pf32O+x5H8QQYuKktICmYr/uMU7LfKiZSbCDmJgRCtaO/+fD64hTmgrH9cHlOxjWUN1RBXVWSQ04FDisqaOYMa60p1455/Mu798dIuCc/Xf7NfmqAHlFZREQhwD1jKS9oThRzuQFomD1jyZRcrY3Wrnpijtb/uXZ08FEZ+lGx7NKY8uOYi4/FgpZlwj6xB+SgAGGtqEXLuaEioypr7jcKSMctfESwbq8QSWLZVcz4zSoWcDgeK3aDHTvAavGuMDtfR1z8/F+v3ywL8DVbfMYx/pnfsA0s0XPjwvzkxI7ZlWHn715d/HL4/uRjbTl5lvz24uMR6hx/Rx/Lx9PCKiKveKhjaAkRm0Dqj3MuLAItfS1tWnUKrj5omRAJbceIA50t6gd2rXDigOf2bcTHz154OLY9CPh4zMbVtK6peX8BzAjOL0mhcTd6mMPL5m73yKUgrpUc4FJNHaf+6s7yWSG5TDNjRW/BqDDgmaKpFazUMFLyG4kBxEpWIiOUlJyldikePqiZ6T5ATDo8oLG/Zp1+5Jxf2iqxkLghFqTMqX0SW+ScHJ27EFFyEYPghka3EvSIwrNdDLDFTi1t5ASC5WEKlPFO1nEVKSO1PYeL54JcOSwmV2Elh5bhpYqZEPhtMRT33fR+Ne/Vg4rQM6nNILRiGvgo8poijIuGHZA050yYAfGPQtdrbHua+K5V2SUvE3I6wT5DZclcPsDpmefDRtbQ8/JqgGXMsK6scEgDjFHX7fL0jBjFbzjN88WACEkKCipVXF2aG5iMgvdwvKhTDaOpDkYvt5JhspWMdq8eUHxshb7awzxHnk/1jGkkAyksQpQnLKcpYR6GJ39or1lzkUqj+QfZkDX+3KihXBwXRHNTOY8rVpReyGpdWVLQlWKQHFDbSQ4wQvOpVNzMCktPzzBXiSk2kfCGJSjLMkGIBQCeLx3rAPHzK8Svb0yva3+0/SpKJuhH/Em7d2r0PIoMRl797fitHpBMFpRjRyZ7xqS61qZu0qSheTh0K69rQT+4zW4vTvpb7dpVO759eta7uKb1r1fWw8/TN+Tl4CbcBs39YqNym+Flhv98h8Cwz/iqiaGnbZRzBo4Yl/2BSSliUbfoC23w6NTaNRYAl3Hn02MIzZkyEWUJifWZYWG1wePrYdspolQdNxpec3j1HS2dCHBHbAee1XqgsoJruL6yeq6SeWi2owf+UQsYEPvp8fnm6dl5/UPo/jsgczb2Q5aYkogt6sIDlcpdkpYeECYysIZJxgxLMU1XWDXcSirNyLOT4/fPXROdkCLETPqQao+VmbVbEH65Nt3QyyBuCQfHs9SsyqRYhPYgCAScXPjLMkxJUsWoifqrhL3ylBUoA5h1g75jC+vcULXxWqrsAeaUawy+qhvuw7rzOFIA6nxuKFygyzZz/QdR7HgUBJxY0VMTh89a60fFoTGsKK0NdBopXq8ZvV7ayFz5ZfgFGNKde3DYdrfdHg/9i/wxl+k1Uey3imkDCl5ZjXOekuO355hr9vPFxdk52SQXr88hBVKmMtdLS4pVJSwe4hpPj5FNce3z8ObczFwlWGj3gpwT2WSkStZuFM8eewnnQQQzGi4d/LfaviqxdZTf0mLlds4QUINZYdaSoRm7o82Fa4Lim58ssfwl724eeyLim1ZYJ3jkfM72cufi9buj/7o8fnt+aQ/B5cXr82XXtuquJevvG51KjLQ21N0VKuK9DrvbKw3CrxaNdniroKNMdX5O7MG7vq5JJtOqzgBuzgZWlj2Z6+s1PQlpaioaWJsgja6UKMm5uIb1YIiEbw0Ht0SIgrE3NWoh5xqIgLLTdRj6GAsmkjm/5iXLOIWmPvbT5qO212pabFVBA29blKuZGZBS5jxdDFAzQY0A75O91LXWE5zsB8l+TCktWN26OvafOR/m5Zlj+ZevUMtaFk9V9Y3wfnDHSBUiEQKOQCToWiagLRQJA870UuKgyTC7YmE0HOJ/l8XdakPMLqImq5tEsRuu26rDmNlVA+2As8NVP+ouLblnTSGWATAcm0jn9Td3GEmH7jm7yb5dOdXuwgX8T/Y3QWgwHlIphNueSVDU0eQhik2pAm+qZmCe6EH0PO7/mOM9KfLTSS7ncD2mstpieiUVuTg6c6MOkN4CmAhbyvhNHQXDBTec5uT8H2+hOxEzz/Rz96Mb1A5Yw4J3L0iLQelqz+QYZL7o4OOHmgt4vEBQG3WDg2PR2UGEpqb6/9j71qZGci3B7/MrFO6IreKuSWze1EbvDQqo2+ylqpiCuj0ztydAzpRtNWnJnVLy6N2N2L+xf29/yYbOkZTKhyENGKgqKnrmYjtTOi8dnSOdB1YysC0XNcsmpOPH6xj9AbtaMKyDQlQAVxHIl/3ZeolWeTPXhbPYLOyItq8ptcUVVGWKEA97AnJSmgD9Z8DCjhjUVQEn9PdcoFDA/RMeFtq3mwYrSCukrg05BBVs2IiRg1WXeg+HX3EolK+48NSLJglRbEKF5jHeBl3DHksFYdcYVtgtKXWOPdKHeWoeu+QGXf4nKy6CDaIsg7YNxVGaO+7M/BxD4zi7MQWqULeR4HmnvXlUmqcpYXj6hrVYsEmj8amDs1cg2JAHbQnpdJrJacapZunNPM41HgYvynACqcetzzLGnz4DDl7BTAZ8lMtcpTcozfCO1/Jwbap83nbKFfS9PTzuEuqO2+CEOBf8mihp5CQi5N8LytL0it4oPG8vb9n0ysHk5P48sl+cI8nKNpowVlRxU5zkrm4TnGRHfHpuQDmPEKzzLknYlMGhPZHWZiBSBAeJZjutROBQFYncGAkt+DIrCMeWl8FxCE2h627RioPmWgo5kblyfduB7sXXHkDXahoHert78mmpVtAFAn9pPC5OmpCUGJHJGnbojf7mThXnUmf+F1FQoH3YT2Mz/hLKf5NylDJydLRXwrshmqZN5GX4Wrk2IMTNQBES6OgS6HXLelTFdZZslzsbowDfAdltl6pWx+M45UPmEZNRzPXNosrQ7XF908yFj1LojFWavAI4UmgumFhYabxPpZJ4drIafJ9kpsdkFyJAaAOQudDZzRlXsqEIzuOQDqcghyefIVK/BuHe7kywFsVNC1IjQ/eooEmdUq7J+B3gjJg8A2e7ad4jKUZc5wnuvynV8KF+gPs/SSeVovOOLG+tRZv99e21Xpd0Uqo778j6RrTR29jpb5P//aYG5CME1L75qli27PbRysEk9b3Wu4TiUQFaT3JIRhkVeUqzsMilHrMbEkPtL2Mulkpx2f1Olw97eIaWUMwEXghAqH0qMYxpwLKinJIzSYudBcFLyXR8o7j5Aw8EuyR2yzcMEvsktaGHeRAtZzA0zYY1gY1txKTvLF87lRhIpaVYTuIaDzI24lIsckV9gRluW1DL/7o3C64FLSkLU+OK+tecDViZUNXrxxoMzVePRbSBb++Le8Lbw+PLdWMnHR5fbi6V94YJjReA8MfdvWZYqjW5dfSAu9Y3p8bns14QJGGEVvsAOuh/2j31zrAtAMatmVQsREmmGb+kmpH9j/+xFBig5QUArlUqaUIGNKUihiUY3NXJjGQyNyuzYmEaPKeyVbLDXEkFIQEghezlkgDdyTlMr1onYKbvZ2hVsl9qbHhg5o0l+ywRxxBJlrHkrMnEm38HOoUwxdGYKR0M7miBc3QB4OmUJR60fOAsQ8/aD0VCQzcI8YXhrJs3lBnpDKWM7HNRLCcd46l3wi+q5aDx8tIGOiUMi/pB6S8Wc2UcGdsaEVzLlF/YFB68mFP5cMiv/YjwDDStf7eygo/gE8aBWYrIKYYaaYle+TWf+FPgwQ1RfDJNb4imFwX/0BVNqdJEX0mS0gFLFXq9QmoIIcFilQb706N95aOCO7GM8otOfcMLqFHivif7olz+05C3INzeGBnmZtX+kdMUq5UGgTIurCEwDoqwFQwVYdcxm6IRA0EM8BresZVFxYp1RMihIJRMaaZ5cE5FahCAkrAFh83/2d9t6IO3mMC0yVObNhlTURxUkbJcdQMK2L6eqo7QgKXyqlnMm9dEed2EtO1cXV1FjCodTW7sCCgYuDKo0p3Ij3hoSyvjKGNa1DNFXDGc3U1TRKB3VD5YjVQ+6JcWX7ckxAV4pcqYrrtpMUani2tOSKIzylOzZKYs47Kh8LJBwAvbHSf5Wk7PAI322u3ecs6GQwbVts2sVlAs9m/Z6dH+Uhfv2i6EvBLukLUEFrHKpevOsUEJGJF1shIskqiuIKvz+mGD3DDDJZCDb1szglacpRQLTrRTj/B9SW5yxbJosSITngAUqWE+Ii64HCRyOGtbpIIc7e8eG5W1ixjv+6FCWXlTx45NKE8fuNsbd5PAQM6crocPRkZL3jNR/dkO8Axib1Sh4MFxvSUCIx2wTJMDLpRmVmRKNIBz92cTKLx6XbhEIZILu3aeXSLdXi3bm2c4oV5xAY8NAolwLjAGJuQETlYHYpFVPiylQI9AlLaWQS/wMEYFQ+lR4QhChRQ3E/5nEMSIJPQfv2IbFT4k54AF9ADP7AeD3bnf3GMphsiralyMSBrsJeO+NQnVnYUIHkeULLdgyjoQLc5dXormOhkbj0/Y6sWpHHFRRy5QXRRUVx3lTKYLy+v1fbdA8GAmdyIJBRMsvDMjZC/4gAp6RpMJF50u6WQMrF8xOoO2WHeFzYZBEa4aVhAV4b66vVe/e7t2x67D3zBKGE4EitC/hGpqIbyiisQyTVkMRSHst6WO/r6b/5CLBBePX8qpHCm7hn2jAjc3pKlhmMkcV8BsOmYTltF0gb0uDtwctQXIlQf/LR9Cii12x1qqtXRKYJnAyQ/e1ivXjyFjUGRDYbOLczsgqKpEMmXsxboJuE3Xhxu93rBEjIXonoZWHz70RwgMjkGInW/mSMIVVKnJuAoUtBxi8pmQCbMn7iWUi8tpX1kCBAYM54TVe2V5L63WpyMExma4T+gFU4RrMpVK8QGWl/DyWbgCRk6NQE6YzniMMgsJ1BWpLadwmQUDDnucpzQDeP2QbMK160tTDZ78JLWNmOCYayaYbQfHWPGCwnVZAgPOEmSJ7IVHG8RmYMoDmhxUk3Pznt3/zHYIHw31wSCkDU5ssrbFNthgyHqUbcbrO1uryYDtDHv9rXXa31zbGgy2V9e3hpsleVzQ8X/JcnTChiEtgXYCalUiVEXDi9Djwq5M0O+QqGflhaapvEL2J1zpjA/yMGXCjmFzX7IcsoH8eQRkg5VtGTwvcYFGSlNIwIdz5WKFCH/MEoB/iN/GVAEGB8ar5LHNkCutImfWhCcXeKCbK+2jMkjglL9nVKumQdC1tdsSNKmZ+mog/lHDyPPCAMOszqFZGHg2FrT4aTgcCfFYtsutLEQyYYs0fr00US8SMGVFzwSSoK8k6iIvSmYE97LTis68N7/BMg1iqcOKOJA2D/ErmIbYDZjgUPdqsbhCHLjGRH5Qu514yFzKqRutnSxVVHIAQl2iKgCYZ5HnQWBtWVCtDEYGBDO9S90srWTJlHjzprAvoZ6eDTyAU1RAzs/WrZyqyswBaRP1wsp/hR0rYUVzMcq5GnuuFYsSlrTZL0g+LW31dp+TyoBKQrfA1kuxdBFMufshrxKK4StaqCw1hYJx0rNEllEreBpbpCZUYDSmYg1mgptvuWf/9csaWgUp3o8a9IB1A3D8Cq5lf2VBNTXA5HXB/nPvE/BipV4kOu0N9mzJTvA7dGCYO0yCSQ4cgw6HOIjM/Bg0YxXoqit0huq9cpbTeUmrnt+hdUvsaAwlfxyO/KNcodQxxMejlnyLOlcKHawlSaW8MC4YtSmoTGNnyYpvERRF9dq9To21aDVaD/0sCFstuVnFN7d4WfiU84NcXm4thpkoBvc+qMVcmLKN4V3Bi92oybMyghEEFRvBoOU45669Fw4zEyB+1SrE8NIVoSoBEcZ8FzUlQqSCwOk7QqbDe3MbN13gNCsyOJgllkLxBHspjhmYSNDkMSg2hWGx/+K3VIwphpNPUcZbzZrQkaFMTCfrYQj8YeDj472IH9t5RjENcyptzDjAW+QuEDw+wKIHzc85KngsMd/Jk/tlBkhb+r4GSL8GSL8GSD9xgDSuPVfkr1BvTxAljVO/Rkm/Rkk/DkivUdJ1GF+jpF+jpL+lKGncE15GlDTAsuAoaYvwHdHBNLWmfrEUpQ8cbowQDrJkjS8CzqwYvfiI6ZnkiB5IjxcYMd3e8nrCsOkGmX+ysOnQHnwNm34Nm34Nm34Nm34Nm34Nm34Nm34Nm5452WvY9KMI1GvY9GvY9GvY9GvY9GvYdClsGltjwrP2Ov+0+Gb2dX7HdqEyiyqlSvHhjYvDpNAHAKpl0ziWWCIOClHiXETTaynk5OY3C+Fv3jgxCH88PP1yQHZPT//L3t+hJ+MwoxMGnQd+E7Ubf7N2Db4lSIqBLRx4ge29DZ75stx45nK4f9Iln/724dcuFLBeciFalMRyMjE61YIcFUNDJAwgFGkaax5HfwGIfKOKsPT4mI/G1ir1ZSalc6/MGMW4CNFvHT6Z0lj/1lmKSlOxeAzrNvpLSIbapHDXWgx6wQUcM4CRSeMxlHn0dZ7hbFpjZAnO0wWGxbGcTFOuMIRyJGmK0BXj/tYJqoQLo+SMo4ShJAZ07J/Z5jLec/kJtiMrh37KouttnmEbW1cfGy8+nFyVLHBkOvzumeJjv2EtempG5IOfyo7FS5czxLkbvocpBJZCZUwx8jXWCTO+CTbT0oSLEVMalAUe7DGdSTVFoz/w7TUdjRA9V1ivokzCFVd2HFGuF2bMdIxgczz/QmqWZNIR799t15BcMUJr+uE3j+hvdpRuydUjb9l15EvXUq1pfBFNuM4YlK7FV9TK6W6v11tdIUudKnnwlybCLNB66pTk1UXqtSVSSJOaPn04keo0Kvc7qpBp0TWcQYz8JNDE4AURKxy+Tri2o5Tp6jeBJ1maXrs9dHW6geYjp3tLrZz2exs7DdIH38+g0OOu0WezaDulBI25ORKyIZTuRXFkT04m1Ca4nSAWYoQRUdOMuTyLOreeSVW0pmdIx7qwL46e7d+dQViVD55Ka8B5EaqOcNaHauJwrIeRt9frz1IiUa9914kZxH3RCme2TpmTVbeqlUWz6lhesexkzNL0gbx6HnXTmtQheZu314WTer73Wx452IrZ7rzBtouYp+M1hQY6YYX30snAUMa5cmehRTsKV/udcK1YOoTdiUPnWKhPn94Qeik5NOJaTthUj32t/sKxQxCuo43ejh01ZpmNb4cgezZHz+2YT8cLa8l2gl2LuUjA2bSNF3BKFLskz/zXNiUpIGlNQR6dnB3s7f9ycPblZPfs18PTX852D07O+qvbZ3vv985Oftld3dhsuyBt/byAdguiwvHBx2XXW1tpKpJlmkrBSlyTkGzom15Z2OA20K9AODDB1I5JjiX+l9l1nOaKX4ICPa+jdBaPKRfnRHER20u9sIUrwatQzIn31eNTrurnfR8PD6OodUfBWZAs+iQzpHUweS1bsET94ghkDKkMs3lxLx4UCWCOC1TbK95yMv2QZ0qXxMJlBo999Hb5BBaZ0ukS99ccHd4QzjFV42iSbCyIMXslzSRGxvjmQgdtWD7ub5CEwzmSHJL9gy+ef+VUN6hM0GLJfMD0UsWVZiK2N+W2FSdVY9v5NoyP8BfuBTfwlqRoGZ9PpyyDdFygV5UTvQ9bm3tbH1b3Njbef9jf2t8+2H6//WH9/Yf3H3p7Owd79+GJGtP+szHl5Jfd/jfPlZ2DtZ21/Z21/tr29vb2/ur29urm5t7q/k5/Y7W/vt/f7+/tHbxf3b0nd4qt5ln4s7qx2cwhT8MgufLhHCpGRU49zrrZ3N76sLm5udvbWD/40N/a7W0frH5Y7W+uHuy+X997v9fbX93cOOjvb21vbbw/2Fp//2Ftb6u/ure7s7q/+6F1ezqLI1cqb2Xr3BZrsV8kpbtu+mhQ/85iHx+EM7lPYKo1bji2jUyNG7XDjE8/24xk8kVKTfZ2u+Tz158PxTCjSmd5DDcup4xOumR/72cfRbC/97OLNWxPpt/p2qK2aXsNDpVUitQ1nNeW2TA28xhD8G7IlGVGpIwonZwcrRR2NCFjKhI1phf1KJBknW0M+tvJ5mBjI97qr26tbu+sra72453NAV1dn1dqhNRndKhbCU5SMLcsNFSzlVMOIZXeFr4aM+GyS0ubviJCQngxy4I023AF8qRuDaz2VvvLPfPfaa/3Dv6Ler3ef8xrERh8B1Dp4gkRtqZPa2T7O1u9x0AWM3rbhkXdry21kiSmkPlsxPjTodWdmqVpqTEWJqe6FuLGx6z3ALTU44pQ7GZrb7at00S0jMivmLns1bN5uNSlEfW1H3fEDOWn3ObQhlHyNou2Rn+IbMUaBVEs56U56sqn0MM1zVtoXI/+nZp3coO/gcrdLzXJfCSNq/Ip3taeoW+88IAPO02zLVByyvGbMUtT2eSAzPDIVzc2z/6299F45Gvb68Y/KR482Nu/7VHPl869/Jnrjd5ORFNIYNH8ksHSXhQ9jzhaX07qgnltOPnbk91PSxFe/Zt5zJrMbgy9m8wB7P7N9Q3e+QdiC/evg1zbaBBMPoL4riK/y1hl+59OSIgxIW/NUG4hqaUuDF2KFWX1+/g3fwmW971YgBZQhOAuUr86HtgwGVAEb/c+QTdGA4SR5JCSnsY1pJ2FZYxr8gsfjcmuUnlGjc9uu03tzesslGkBKbQLpwMm6r7dW4JUR1VF82vr1rgNOCSh1r1nNPFdavzt/n24t/fz15Mu+ezt5EMRg8KGraqIue+GtnQDp/26eQyOQ2ptkdy7KJa7aZzOOVqqHd4ZoTDa4h+cXT0AobBExIKRCqdS5O3nByzoQxE/Es40PcsFX1Sz6CbUaUrMjIYCX+9Bgor0P4AMUCnsTGZnECC2uAsrv6diZbKMuPn8jnraJScQbnZck/M9mvKhzASn98H0MTw98HmoDqrztnDtZng5q73V3nJva7m/SXpr7/ob79Z2/iu4OvdF7sFu3Z3YVf24mZj1d5Z724BZ/916793qxv0xw5ymswt2c0bTkVkH48nCnDk7flMfdp+AdcHqC/HLyb02kgC3OM8uF7XoTvH+7TK8DGaEpal5ILY/FdgRT+f6FZX/yVd5q9FCcKWnG6utwxxmEIRdT6Uo8tPvU6XpwA7h2ZmwjF/WmOnvflogt7mxsbbliC8Sdl0Nf7gfsor/2Yb5sxCFBGD+p4/nDHippjSGm6YBb4jMXe2tb98HdMUyTtOz1nW0HpA+glO5ClmwXRUebeMuWT3sLpxOVyilODlJp2MqcqgF1C3XHisOu6+4HktwzlJjrBgPy598+6HjMc1oDIUPqkTe2Pjw/v3O3tb+wfsPvZ3t3s5+f3Vvb/deGkPxkaA6N9RbsDI8LGeAhaT2QISa4lfooy8nE2boo8J8UtzahzKHcAjyN0mOqBiRvexmqiVJ+SCj2U1EThjz4SAjrsf5wBg1KyOZUjFaGcmVQSoHKyPZj/rrKyqLV2IYYMUQBv5fNJI/Ha2tbS0frW2s1diAtyrL91TV9hDgeVxe5X1eB0YVOTWmGUuiUSoHNPU2YdET8Z64PodL+zgercPhKV3aqkpyB0dYdGmGT3ty+nNh13bJ0c8nVJAPxlvlKpaBz9s1nk4EHu5CuP1i3NkSAR6C0XP7s7MWa4mhj4XgC3BeK/jeC6UfwBG1N/eLtZ6Ccs9mUmvO1ERxrTUCC/RPZgQSFh6LT0GHivp4vdHFC0c6hRKxTfUCFIunqxubWWtPhClNByko9haYDqRMGRVNCL3Hn8gwpSW0bMGb06MTIthIao73TFcUymfETKlhnhoD05tOUASZm6dsXKogTIDdYz7nQrC09XIT7FqfuRDVJ2Wlj4sdMPgK4GZJRI5tJSEMOyFBMRUocLv7adcW6jH2gbMNr66uIk4FhTBhqow1OmFCqxWdqmXAxEi+wWEZx535Q3Q91pP0J5pOxbKDcZknaqkSqoSVvwLnIJVXkMWp6lJnoFzpR62FLmMqnyxU4LiqBDODwNl5IXXZY2vE6xoNnKqUthYz2zf6RUbeWtjmjbyto/RckbezIFkQiRcZeRvy4l48eJmRtxbO7yby1rHpW468DXnyfUTePidXHjvytsKd7yTytiWHilG/wchbi+OjRN6ezBVjW4utLfYChKnmsj1JjK2d/He6trAgr+YgW5z40YJs13bW19f7dLC5sbWxzlZXe1uDPusP1je2Bmub6/1kTno81tWr0nQyrcWc2gDLlxBkG+D7KLex8yD85EG2FtnHCfg8aR3aWVGwDQu9FhS0sIX+Go/4fPGIIQt+9HjERlp8Y/GIDTi8xiPOQ60Xc4Fzr3jEBoSe+/5m4fGId+D8Aq50niQesYEM3+k1UIjpdxePWEXu+4lHDDH73uIRZ+D248YjziDI9xmPOAPZbyEeMQT9NR7xCeMRS4R/jUd8unjEEuG/83jEZly/rXjEJhxe4xHbUurFuLP3ikdswui5/dlHjUe8C8EX4LzOG4/YhNIP4Ih+k/GI5evyRy/mjyZYqSuYu/ad0kzZuCn4XmZ8xI3wYZRYw0VLtNr6UNvxYsFhep8M9VP+J0swlA2ukn2UHmwiIZp3oegKbs5E0IvdlApXHbgJpzpGM/BpbMVT7zRj5nO9NuBzLLHSvVETOqMx8213dvHhjNmLJrhnl1PjbkPInGvYARGZFOLoij59lGTsjxy6JUhCBVzv23FtswpYuRRaOQ8Msf/IWXZjW/EU0j8c7tDtne3+YCuOkw36Ly1Iilg8IU2rZIPPWIc0aGtoe7Vg97qCZDZgbMCM60i0HDFDqnKXPTuy7ZjkCDumIknR1fKTQL/aZRvYyBJHa1Wl6/pguLM6XNvY2hqsrSd0k67FbGd1J+mxHlvfWtssk9PB+sREddO2ltfwHdvK0PWE9Q00oSXIhFGVZ9ZzBCH2QmkF2JM8FGO3SVSI2esNe5tblPYGdKe3OtgKiJdnqLBs4d2vX47g4+zCu1+/HLmSurYzCbHVctDJk2ZKux9iT1HzisJrRfukA97gP8gYtDIkibwSRjwkUfGYTVjX9x2dUj2270viwlrb1NJ9nM69+9jdzTWLytKg2We57lLYN/JQECWhA6piRtsYuk3oDZZ+tnHhh8cGqxVDKkM/bE6X3nT9eQGtNqwU0ODy0JaTMmNjh8ugqfgVHD+MpGuyfG5rRiGF6k0eG0pH+eh6F4C9oD0N2oNiB1TfABajP406cpM37NtW5j1ZgCkQfJq4uLCU0QTFSpe6edZG54rAfblimnCzbG0McNcwWEht9GJ2A4W6x7BvlN+vDO6mxSatZJIrDYMMfPPepKFBKZ4mwcMDRjpTMQrqLpnXO5H5rtz434bPXmF1MYsXGAKlbrUeUkXeOj9P0ywa/bnUBcz9mL6JqBRhJJvtH5WQt53Rn50uwoMjdJbq8jS1xzZBF6fRpN0p7L1k6Lho8GvXJ4E7GhT+n86D1arltFPh1/lP53jpUu4n64CudN4b5uk9WoM+W4eQwyF2XjAKGHqC8YlRNLYv2I3Moeh3oUZuAq4rLcOIJC7IeZ6l0LT0HBJ5IB4S1BCuYK7g9E5gxA5L0CMCw8wFb4OF4YcM2643lJcv66V36+trK4rRLB7/9Y+f7ff4+SctpyUuOTXxDXHqzVcxkQm22/ZaDkRZEcWYKFHQU65BG3BBBNNoQ0jBtTTWPyoZOQDrIPFb0YDZduPmG+BpxqgKWU4hw4mkcqRwDPMqlL7XTJDfc+hlX4R5gXo0u3W1f7KXEN+Uzr/mh6XK6N4rqjyg3ZI1IaSuK5t7CYsZbcbPJTmaUqUCffToyTB2+KKRAGxqUQUG3aYd6m0GzDHV48ocgU60hOhUppXZnNdmeDrwzvqbjXDIQr/W4Fhfrx+3r6+vlYACB2yRpghMYIUVfx0wZZvdm19sUlkTDl7eDU0rQlXbc/4Kew7aK+G5RDhLZLQ3mo3eNhLSvAsrMSt0DMYMBLBHtnl9hhdUMN8g1/6pbjAZIosWjx8Rm5kLwiZTXcADoOOT5/Zt26LQX45yCKgXmlPNyIDpK8bK+YH6SqJFXNlYi97+7RvS32q0nwauVTE4qFTfsV9nfDplfv35pvyzWkAj0/1YroO/zEhnKGWp3T90kg+/+HY7yhuWQVd5NautfLtm8tUoI3/ABN7eopb1CYw+W/3BBlI1rPE6/Pxdo2mI8M7YisqYOYFapM7yk4DOtoYwbus35I+cpmhUBC3KnSNSrPeiDa49umbXMZvi1jyWyrZNzkVireraao3A36XO4w98iioEcKjGXc9V5n7H1qfFIYh2TcNg5npX7GLFdAMKeEVZQ2jAUsyuqC/g5tVe1gghbdHnp0pHkxs7Aoo8rnmqdCcqTgFs23kcpeSXAa7KXnp4neTkUuWD1Ujlg35JrXRLy7MAD7W4Nd5d4HcxRgdPFMwGoDPK08JBbVimVLW+A9RyegZotFfa95ZzNhxiG1szqxUUi/1bdnq0v9TFBN4LIa+EaxxdOT1Bpdh1R2+g3sKlHfbxr6v+6rx+2LDFViwnIAffts4HfT9L3RecaKf44fuS3OSKZQsMf/hqh28wrEMISuee7vPsg0+QQjjftsefzkIsN/EfyBwVJzyKPhn0KWOX1Du/9mjONnK3X9qWZkY+xvSSwSkMg7gGmQXHOUJnnClrHsIkoFYktBWnAl7jidMU7oyWCkIhM9x6ibgDBIpyYhnXqkfZmIoRU9FiV33Y7hiPRmV2U5AWTNsJg5guOZxls1FBjvZ3jw0Jd1Fo9/1Q4XJvX1Pb4g4ZMg+0Uo3UlVNt2hfisWCYTfKeMSmL7CNpMHujii28a/Z83/Sg5untpgOWaXLAhdKMi3mJANL6bNIIsz+3OCIJFtbFtX4L5gv8APa2ryJ2pV+ZplQblTi3NCMWC9waQi7iZPOCGGSAP7qMffX9P20tAGgkkmGHydI2M4SradSDglAhxc2E/xmc1yL5/cevig3z1CzCc/NSxJNzI4P4wSB47s3GWIoh8pmm5a1NJA2WuPH95xfXqqDGRdrBYwqpuxNQRdZpaxDrUlgD8gkV6slYZtYPkxlJ5Si4kVQNObUUNOq8OGcyXVgurC9MgzECZiZC0VTSvFiV1iaqoPPmn50LPqCCntFkwkWnSzoZA6dMjM7MgHOUe/nurBZ/XesM8x/SMCuwf2bTrADkhzbOCjL8wOZZlQjfqoFWxeNFmmgFkK9G2kOMtIKOL9hMK4D8kQy1AusfwlRb5E4exvS8jE26fbjII+zgDs7vdXMu4/ci990yiE+/pbr5X3fLmbulI9FzbYS+EPRz73HtddMDNkAfDfIj7G2aZiOmf0hX3aL+zH66heLl7P/P4KRbGnyvRsC8FHiRZsK8SLxI39xC+GpqPMQxt0R8wV65hfDZzZUndMktyt+xzRIGzZzRkcvhCEJnSPFtiwAaHMOF0QhIbIaCpROGsdCUDDJ5FaSS+rV4OmY3NvtAjeUVMfuGIFds4PIjIVfBDMXFqAistpnRuQfVBTW3j3lJmBn+qZSrna3KS348loLd4RksBKCCdPWqOHRIM14C6sVk4FRUXCAHZyU5qOL0Uf7J05SubEQ98hap/t/I3vFXywHy+YT0V8/6GKT3kcbmi39bIrvTacp+ZYO/c72y2duI+lF/w4P39u+/nH486uI7f2PxhVxyNRZW+qtRj3yUA56ylf7GQX9925J1ZbO3bjvTeOKqaEgnPF1UKsTnE4Ljk7cuti9jyZjqLknYgFPRJcOMsYFKuuSKi0ReqaUaAfHJGtzfVv7cZ6wlIEbWMHOGuAgTTX1vgQxqD6H5WZMnFJGP8nd6yapUuWCZYIuqG1HDAWfzYGMpBHo1ayWsR+tRb7nfX12GSoY8rkL/IlynB/PUZVwHHJ3FxH+rUsCZ60/FQTefXZ8xE1qqLskHudD5bWuSZle8tiYXW5alBnxbuev3on5V8y0W1KDezR07ntHWgV10mVpNZy2ifxztfmpjC5nnnBVEsyKNytrgN2S7txr1/yCajt6qJczrmNL4gmlfcENhWDZVhIsRpP9D9Xb8E8anSsmY26pSZgjh8ivB+QHvyGCtXZ0s6ktX2slQs7lOZN4U+4RpppHBvgmLjMUyS8xwXIxSi62mI8gAgXzUHLK0of2ZY94Ys5ENoH8sc7H8B2EiplOVI5Sqa323JshIKXVU30x5HKSi2EBoqEZCfY6sYkLJjLxl0Sgi/8HYRZf8yjOmxjS7WIIEUH7J0hviLWbw1DM6hMqeFUpwIVg2k6s4BMGHLHIFgxV560K87aj2tzL+SzOQvB09xM+OOy+Wt6CHCSd2XCii4JIBjVudJNxKloOnJCtG0LFLBnPk0HQ0Al1gh/w8cO1qAuF20huFUm67ETbIn3vcDullO/TNoYSCXxW2Do7z6BOu4ozBCUJ1hdkxAYJgvFl8GfKMXdE0VV2SgfCrLjqkNCEDmlIRs0zN4ZIs7LQKEDrcR8vPiERRL9VTv66v2zrMC/RYPk9tVTnAADz+eXCQuVY8uaMSr9f6eSpYRgfcVzx06r/2w+x9wGwDpYFaJJfQhqlJLdPEtR4tzgRaZXZQzUZysVnW0KpEDp1BYPR5Fo+5ZtjnBRDRNbpQiHxQRWrd6Zgp5uoYOJNo2a/vt8Pw2Hgf3BEz18nXk4Ml8wcW5k7hQT9o8YKr+iUz8sGu26VSUljR3fSPnKY3apTTLInwb6g6+8cVG4xZOl0ZyjMou5GuXAh5lbJkxMzQKyUEzyzpOVPRWE/++a8wkAesTIzi2f9caiy14ErJuLSfelbWm392HF5zXFrFqdksXL7mgqQEio2XJvIF/UpUULHMCsuyxJzC6Q4rREDxeehBG18qtVIvyviPk9aVYgOIH48Mizz9OIVjJf9FM0lh8dk9S/ktnKawG4azNb09Y3nElyyacJ0x7P5rdNjKkP4BYp7+FF+yM8hyOwuAU2dxxqhmyT/3oISxnzbUrZzhXnxwPZXKaI69fxyEGP5njb+Hgkxo/PmEYJ8Dshr1V6PNblgroUwOW3Xly/HeHA1fGVQDX/QCcVo0OLAPGm9zdQtr6oujiUUNq+OgLQkWZpkYzB3GVjW8Pdxfchm9tsR7KRO+abMkmFgZkcMwF5Lk5TsQO4Ed1F3Y1ela3T3aiv7VmOozrs7MEuDJkpX1qoz70Wuyfrj/nw08WsbeGb1eb46G1lC2Y2GVcndJxrBm0WwFU7KfrbbBon8TrvkI3R9PC8cML/1JhS9VwjRzJB7x5QEX5ls4totH/K/mj589HTf7/TnIaATvbKHCb71ImREVU9Esqo3dVPq9/nY0j1CY8QXLoksmErmoGsOntkLDrA0eQCAIQg2tUyboIG3fOCOWGYsGRcuF25AZppLqRhP2xAyDadoZFSN7ZdWLesbi7veini22YP503fPHjEyk0kSxS5aFhbveGxNT2RGl8T6NxaYUU2oCd2Sgtaep5NoRZcJ0xmNF3lKtaXxBLiH6oagMgTWzrrm+6ZJpxi95ykbM1t+0V96aZViEdKlL+GRKY12MGl5gmzH8uOa1UQbDmqFsKArAZJsGQunTGUZAg/nlTHUQ3eVExrlBealmqW5EG/OxmIlLnklhRmt1BfVEvD4IwbqL6VTcEF8RDqTEcqhL7sMhuEjlGTPjqxfAIs0mU5m9JO6cWojuYgzc8UyozpHQhqQJD6rXdEv7teNV/HjroiWFF3tWDo78J1fDv3TiUbjObz/9Y3+p2Oyh1I+G5qeeRsAGkE8qLrgYwRF150heQSN/lvB80kFp7vzCR+MOsMC4aeRy1TDVq08/IkiCqh5AQnBVMZeGqYqx1qKeLRlzA2eICRtyUa5+aUYoHi7xKJAieIIrIq8ES9B6oYKO8Ozpw+GXk9PoczbCtg3kLXxhlCf5erKMfaCFFMvTTA554GoFDRO65GosjTLgyhWv1ZKMWToFvQ8n6orFIJzGsgU9YayvqRTBZZlmdKIIjTOp0HC+klmazBBRcZlEgisdjeQlnFksW1UE4lpXBng50k5ULUsWaF14rjdaGFBsxVAPFIXbBCl0GYJWvamn2TTjMuPaMoJkbEQzuAQOVMD9KFgz4s00sZ/6jnPI643eTnj8CL0a9irNg2+9ieLKWAEpbg54B4OeiFlY7kDSLJbrSodnVeruFp5Ucqwjn96QVI5Gto45OT06IUaZ4k1OwkccdkLXC6po8OQpwuJcGxuPDLigGTd2zMnKx8OPB+XZhA0BHsgEnoENlKY3CmqVQmVkB6WEE/0Lv2Z/deWTw7Y7GDOosKa6ebsLhXL12JODanJufoB+HOcRDGNHHFM1ZsrJ2/7Bl2UmzK5Rbths1IwP58UCU+fmzXNoOADVqEvXKwNGpnKaG7gSf++H91YIiHk5UmO6urF5vuTRO7i0TKW6iFEMWzLWjpfd3VFxsaa6ZVAcKbArCNIjLA5nD6ANt+1RFjnXqYqCDibntvC5HRF+jlPOhLYEbX8L8trL+1l6ef/o/bu/1Z7dr326W1LoxTQzu1dv7h+lH/cP3IP7++67/d312v6++mt/bz21X/tol4nwffbO/vb6Zb/2yH6yHtmvfbGfsC/2994L+1vtf/3a87oFdV6Ma3i/PtffZW/r76Sf9ffdw/qb6Vu9bGZ+RwYMrp6piMcyw4/LsYtItPct7/GZEgj/Hcbec+1I7N5jXvf3B+7oH24q09R2doNjYwNq40k3JCONpdKBQkY60ZT7zm1Tqsfu4eDBBgDNv302zVgMtwrLcLJfvAjXKPCJl/OSqHCJUSX4DH6R5hP2p0tSng0exqVXHp7wEcZNviM6y1l5dKRIaVgJi8V+hR/OmuRmBuqePxAWA1f1ozwDpuBkTfi1IL3hUPjcrWjBoPfl6a0jG+Ias56piAulg0PRO2kExwz4LnHvEp64ZRGnMk+KFbBnPrp7/oxMmKYJ1bR5UXy0v2KwRlx6FQICC7+DJskZPHDmhjRPxkwpDAYL10gJc3gp4hM6CkpYFuUdJnyZDuKkv7rWqD8KATk0I5DDfR9uiOA6iljx+InsGk7BQzJNQkF1ABn4I4TK4XoHqxsfvpXdwRwOwCIU8fZpPEL++blnaiG9lbnainEw24TGYy4YrPFWk9kXouCFtnOF0VNnLRTa7W+1nXWaSdBiLRlnH5+fbxkbFVbf7XOUHm0c36mFRMYXIKtWL+y7zw3LC38Du8Psj2mK7eBBKeBvZoWrscz0GWrmwp5w2zHOt+x1woxt04NFGm6Uy6+UlAjuDlDux//YRKyAYM2vNBJtxlRG48w/G2i6YEHNOWvlzXaT3n86202Q/EROP+9/fkd+kVfGvJjQqVGyiv21Bktpoye3b/Zktj4nXqcjCJGTXLP/FnL7C35qGORQDGUorXZbgB55TtcEAmq+bxRPu28c7J2EmcKukZuKWKyim0ka2ecw1Y1meHYqpFgu3qyU8pS+e9tsSZ/NmlIRLDfEQMqUUdGSvMOCIpBQU7C9Pq9U0SDnaX3KOkf97t3pb+/3ezudduB8PiEwQxjn0gxILBPWuA5ug0XpjOl43B4YNwtW8xM3XgIv8gHLBNNwtW/l8O/hdw3jFr97m6tsQBWDklAKb9eqxUt3atYS0LfLXJXiU5k0q525FnNAganEY6U6c81UeYMOv+9MxzIhXw/36xOByzyl8eMhVYxYn0wmNZX/wMlc9ZoZk1WclIdP6AZsytE2M/6///N/lS1XUwfJavC/PHivCH4+m9DplIuRfbbzl5YLO8DJ7m0TOq2DDNX/8AzsxcEdwNYMfMamKY+pKlf3e7gQFOPOkL2ETVN5M6l4vg+fuBh3xsRwJjbM00dHORh4xtR3mGb3ndgPe+e0zXbow+fFce2eZ7eXYsM79l80jGt/LLY672c3bU3F2GSufYldt7WE7QxREaR8izVsMf5dpvKC02Waa5lwBTkmBfr/A38l+/aXGxI+R4LDgDvPVRqGCg0DC4cfctaJo30uwoOnckrJHAdt7kTW3i7LoQcgqK/UPCe/7Tx4xnQHNB7bMo9jWsrrtXEztgUv43pc0DUhSY7lBDTNdD51V1M4EDZ6n2BKsT8qhLDpKc3ohGmDWGbTjIBvTIOXgJ1a4QvzsWvzVgE0SE6gKTQhVhhUcHiMT1jxIjzpQkQ55B2VQIIsBa2AMs0ktAHX00wmeaznJyREq/i1a4cxlqvH7bZp7y0upWnfKF8y7G0w89IdUwc5q3POjO/6i0mPfiALimS5EIbRXDTDkWfp/Wb/+uWIjKFVufGeYDorrQDJbUSP86xye1L23GbM+uuYwTIo8Luiyou49XJprsdMaF+OIyNCau+8VK9EOjaTfcxopuHWYyIF1zLrVHTXDLVjn56pvGee58Os9u3yGf5sjR+cDc7i1y1zOr65SXExNroGjzZJiTvVY5iGCiIVfMMyHiE4DT9AEs2fLHuHDcMbTIaH+lUltKDY/e9yYGtPuRA5L0bRMyKa5KWSHqRRMGvInkpNU4cgJKAypZvGug2RXDWiEYSmNc697zYoLsiEx5lULJYiUQ2WbjxmrU8A8yyNai9U7Z0ZIJV5v4spKWZEC0I5f+5cx9PzLiQHmf8Za20+mm0P/lbnDQstOABrg0ilk/89EfnFObJy6OtQoyFgOW+sgD1U45C5KUZwAOSe5WUG+5eM8B8eN2DJpzUc+UwZrBzQHd8K5WEIVRkS5653S+NB4hqfntvCU7G7U8VUMCXTS5YQPnX5R8VVWp5lYKHJoLx32fkqyb1NYE9qfLnPGTDWHZSZYYLT3DGEJEK4tAstdpTQEmppFc036p7TmMUXZ1VVcA/QdomWF0w4kxUSEBU3yo4KJnOV3hAuLuUFS1zniCFOrrAIaFFC8wqKGrmikuTwGA+Z4WG3q7vanPufTmxFnDpqcI08pXXFZ8h0BunWLVU9nzCbqA/WzRSTZ+25D1jdYDtj9Te8J8S/AWYwS+ApY0QzkQQPw9fOZBPsWoM+SfKUJfhy9C/OVlH5ZEIhIs8ZKx+tANhfWtooxTjkbhulc5wxZd0IA2JKlbYRH2zCIfzVOh/UwgtOQyGbyGHPTCaSqeRCqy5wXQVc53pMzicyAbWXnkedO8yfBoGFOhIsa7+BF36dBwwzTlUex4wlwaVCcSl3VZeox5t4SHnKEs90q4gCphuVTVIpL/JpS4YXY7RgeAFqMFHpxmY2R17sFvbY+1CxJeSiuEwb8UsmZm0Lma6T5lYDzBtBbv/A0rDASkIhoxYOTNzmFj2XTeZuIrWehmJ6eno8p/NkR2imzywhNdNg0nvSUkoLD5e0ENKg8D+5r4ieWLE05qJzDSxporqgVEtezJKW25g8kMlNI5urg8waqMSXovVRfcC6jdCCIO7fL1SN3eYHLpRDHhDwlqfPngK7wT2jcMvA2L6YprZ8QdRIkIxh565m4W9G4g4EXASqH5oMZZrKK4SVZpAyBHGTvgyl0BE5Mjsoh/qxdkvleOOs7SGKUSdw2leb0RDFDWTeUGN5JZrxHTOasKx8W0Nm39gQKCxoTMSk2p6gFS3g4IsKKZAROLnjbGGL29WK/GsQ/Xl1ZGUnMKOn9AY6DRnFrDM+RSuwrXJ0RnTrtVMC53/V6OK15oDpK8aEzXIc3GjYryw9oFOQ3bSuMmNVQdet2mjF6oBH7UEr6hMLucyiYFIozCMFoWnGaE0jkCCWt147I9jD3L9PUpt9clhMhqmompjhDUggoTLDkuqUTDM25NddsJobFQBxhlAiGY5k1ADUc7d2J7SKgrMIaBglykZZhU0SAIF3QIHMqehqWyO5bXsk8x9bkAZRO5tLV7eVNxkyqWxBUCzvVPIXGzYd/IdkfJUEskBJMEuenVk1cC9JuFUOlPU4bXmkaco0K2meBo1R1xSoQe7QGC+YyE7Cz3Bzehwy48GAW11Ox4cE9/59+KUhfoNyx23ArM1glwAbv7RvWu1v+FFwrr5wK7r/2+Wcs5zu6biUeQSKQWecXbLEX5PZ8w0AhVhYomZgQAE9urYOwXPXp05QiM6oUFj1NCInRp7Q8q0Nh4dPHBp4nu4dlxrMaM0mUx2RA5FYuxlKVBT6uzZawu0JVGmDeMl7wUuRYusQ6zj0hw1DwDZt6Qzj22QeX9hM4da2NYPncoynMpvn+Kby+IM8YygN7WpAP7Zf4El/b7fArqT7rfu6t9S47pnSdJByNSa0unrnsOOLw6mXshoW4GfdQtHC7jWflGbTgnrsGlO5K+R9KYRyx/wyvlAbgeY4+bz395MNsy9ctz7id2M0E3UGMcOJKqrj3R2q46Er9OjkZa3QmtEQrs5gZV5y6shmHrJH+bcYY36hBoNoWSL9S5FHv4+lKtzHjk4IE1BlAypHz7OlpbOjGmdtaYVgzLWVBVUZzoTUZ6ATykWsSFPJKgTF5RW/I1vRtq8JXKdckYDMBRnSSwy+qlYMjYr6WecROaBZyo2dr+sFsbxIvFGlYrVw/Vkqh3UXpmH9sbtwmkGEeyIKM59H5IjqR8Ty2fXLmIpEjenFo+1YNQ0z5MKoFwOqn6yFF1cb+OVtbNV5Sm0NZxOxIoIaLkZrlZzDpO3bEb21lEMVmFnXGjMLOcyA+/aSDsW/WnGHcLyGMg9OOfN4EnoZh3sfj1tqY/tmM/1npZUfY+xDOyVsTzRUjdNz3ZZ/soW9hsQgRw7isfxiB4ZDlcfwF/zI5EtwCvOFTY3TWdYYLfXFY9+y/v8AAAD//+5noqY=" + return "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" } diff --git a/heartbeat/look/look.go b/heartbeat/look/look.go index d6ea75a395a7..15b5e463a28a 100644 --- a/heartbeat/look/look.go +++ b/heartbeat/look/look.go @@ -29,12 +29,18 @@ import ( // RTT formats a round-trip-time given as time.Duration into an // event field. The duration is stored in `{"us": rtt}`. +// TODO: This returns a time.Duration, which isn't quite right. time.Duration +// represents nanos, whereas this really returns millis. It should probably +// return a plain int64 type instead. func RTT(rtt time.Duration) common.MapStr { if rtt < 0 { rtt = 0 } return common.MapStr{ + // cast to int64 since a go duration is a nano, but we want micros + // This makes the types less confusing because other wise the duration + // we get back has the wrong unit "us": rtt / (time.Microsecond / time.Nanosecond), } } diff --git a/heartbeat/magefile.go b/heartbeat/magefile.go index 833ecef521e1..0480c30a69ef 100644 --- a/heartbeat/magefile.go +++ b/heartbeat/magefile.go @@ -80,7 +80,11 @@ func Fields() error { // Update updates the generated files (aka make update). func Update() { - mg.SerialDeps(Fields, Config) + mg.SerialDeps(Fields, FieldDocs, Config) +} + +func FieldDocs() error { + return devtools.Docs.FieldDocs("fields.yml") } // Config generates both the short/reference/docker configs. diff --git a/heartbeat/monitors/wrappers/monitors.go b/heartbeat/monitors/wrappers/monitors.go index 28cd4aa8cfd6..3b5965ac01cb 100644 --- a/heartbeat/monitors/wrappers/monitors.go +++ b/heartbeat/monitors/wrappers/monitors.go @@ -38,15 +38,22 @@ import ( // WrapCommon applies the common wrappers that all monitor jobs get. func WrapCommon(js []jobs.Job, stdMonFields stdfields.StdMonitorFields) []jobs.Job { + jobWrappers := []jobs.JobWrapper{ + addMonitorMeta(stdMonFields, len(js) > 1), + addMonitorStatus(stdMonFields.Type), + } + + if stdMonFields.Type != "browser" { + jobWrappers = append(jobWrappers, addMonitorDuration) + } + return jobs.WrapAllSeparately( jobs.WrapAll( js, - addMonitorStatus, - addMonitorDuration, - ), func() jobs.JobWrapper { - return addMonitorMeta(stdMonFields, len(js) > 1) - }, func() jobs.JobWrapper { - return makeAddSummary() + jobWrappers..., + ), + func() jobs.JobWrapper { + return makeAddSummary(stdMonFields.Type) }) } @@ -107,23 +114,34 @@ func timespan(started time.Time, sched *schedule.Schedule, timeout time.Duration // by the original Job will be set as a field. The original error will not be // passed through as a return value. Errors may still be present but only if there // is an actual error wrapping the error. -func addMonitorStatus(origJob jobs.Job) jobs.Job { - return func(event *beat.Event) ([]jobs.Job, error) { - cont, err := origJob(event) - fields := common.MapStr{ - "monitor": common.MapStr{ - "status": look.Status(err), - }, - } - if err != nil { - fields["error"] = look.Reason(err) + +func addMonitorStatus(monitorType string) jobs.JobWrapper { + return func(origJob jobs.Job) jobs.Job { + return func(event *beat.Event) ([]jobs.Job, error) { + cont, err := origJob(event) + + // Non-summary browser events have no status associated + if monitorType == "browser" { + if t, _ := event.GetValue("synthetics.type"); t != "heartbeat/summary" { + return cont, nil + } + } + + fields := common.MapStr{ + "monitor": common.MapStr{ + "status": look.Status(err), + }, + } + if err != nil { + fields["error"] = look.Reason(err) + } + eventext.MergeEventFields(event, fields) + return cont, nil } - eventext.MergeEventFields(event, fields) - return cont, nil } } -// addMonitorDuration executes the given Job, checking the duration of its run. +// addMonitorDuration adds duration correctly for all non-browser jobs func addMonitorDuration(job jobs.Job) jobs.Job { return func(event *beat.Event) ([]jobs.Job, error) { start := time.Now() @@ -144,7 +162,7 @@ func addMonitorDuration(job jobs.Job) jobs.Job { } // makeAddSummary summarizes the job, adding the `summary` field to the last event emitted. -func makeAddSummary() jobs.JobWrapper { +func makeAddSummary(monitorType string) jobs.JobWrapper { // This is a tricky method. The way this works is that we track the state across jobs in the // state struct here. state := struct { @@ -173,15 +191,16 @@ func makeAddSummary() jobs.JobWrapper { return func(job jobs.Job) jobs.Job { return func(event *beat.Event) ([]jobs.Job, error) { - cont, err := job(event) + cont, jobErr := job(event) state.mtx.Lock() defer state.mtx.Unlock() // If the event is cancelled we don't record it as being either up or down since // we discard the event anyway. + var eventStatus interface{} if !eventext.IsEventCancelled(event) { // After each job - eventStatus, _ := event.GetValue("monitor.status") + eventStatus, _ = event.GetValue("monitor.status") if eventStatus == "up" { state.up++ } else { @@ -199,16 +218,27 @@ func makeAddSummary() jobs.JobWrapper { // After last job if state.remaining == 0 { + up := state.up + down := state.down + if monitorType == "browser" { + if eventStatus == "down" { + up = 0 + down = 1 + } else { + up = 1 + down = 0 + } + } eventext.MergeEventFields(event, common.MapStr{ "summary": common.MapStr{ - "up": state.up, - "down": state.down, + "up": up, + "down": down, }, }) resetState() } - return cont, err + return cont, jobErr } } } diff --git a/x-pack/heartbeat/include/fields.go b/x-pack/heartbeat/include/fields.go index 3a83e4bde581..37d2a810ee1b 100644 --- a/x-pack/heartbeat/include/fields.go +++ b/x-pack/heartbeat/include/fields.go @@ -19,5 +19,5 @@ func init() { // AssetFieldsYml returns asset data. // This is the base64 encoded gzipped contents of fields.yml. func AssetFieldsYml() string { - return "eJzs/WtzGzmSMAp/71+BVxvxyp6lSqRulnXORDxqSe5WrC8aS57e6fGGBFaBJEZVQDWAEs1+Yv/7CWQCKNRFEiWbbrtHszsekawCEolE3pCX/yC/HL5/e/r2p/8fOZZESENYxg0xM67JhOeMZFyx1OSLAeGGzKkmUyaYooZlZLwgZsbIydE5KZX8F0vN4If/IGOqWUakgO9vmNJcCjJKXiTD/2SfyuSH/yBnOaOakRuuuSEzY0p9sLk55WZWjZNUFpssp9rwdJOlmhhJdDWdMm1IOqNiyuArO/SEszzTyQ8/bJBrtjggLNU/EGK4ydmBfeAHQjKmU8VLw6WAr8gr9w5xbx/8QMgGEbRgB2T9/xheMG1oUa7/QAghObth+QFJpWLwWbHfKq5YdkCMqvArsyjZAcmowY+N+daPqWGbdkwynzEBqGI3TBgiFZ9yYVGY/ADvEXJh8c01PJSF99gno2hqUT1RsqhHGNiJeUrzfEEUKxXTTBgupjCRG7GernfTtKxUysL8p5PoBfyNzKgmQnpocxLQM0DyuKF5xQDoAEwpyyq307hh3WQTrrSB91tgKZYyflNDVfKS5VzUcL13OMf9IhOpCM1zHEEnuE/sEy1Ku+nrW8PR3sZwd2Nr+2K4fzDcPdjeSfZ3t39dj7Y5p2OW694Nxt2UY0vJ8AX+eYnfX7PFXKqsZ6OPKm1kYR/YRJyUlCsd1nBEBRkzUtljYSShWUYKZijhYiJVQe0g9nu3JnI+k1WewVFMpTCUCyKYtluH4AD52v8c5jnugSZUMaKNtIii2kMaADjxCLrKZHrN1BWhIiNX1/v6yqGjg8n/u0bLMucpQLd2QNYmUm6MqVobkDUmbuw3pZJZlcLv/xsjuGBa0ym7A8OGfTI9aHwlFcnl1CEC6MGN5XbfoQN/sk+6nwdEloYX/PdAd5ZObjib2zPBBaHwtP2CqYAVO502qkpNZfGWy6kmc25msjKEiprsGzAMiDQzphz7IClubSpFSg0TEeUbaYEoCCWzqqBiQzGa0XHOiK6KgqoFkdGJi49hUeWGl3lYuybsE9f2yM/Yop6wGHPBMsKFkUSK8HR7I39meS7JL1LlWbRFhk7vOgExpfOpkIpd0rG8YQdkNNza6e7ca66NXY97TwdSN3RKGE1nfpVNGvtnTEJIV1tr/xOTEp0ygZTi2Pph+GKqZFUekK0eOrqYMXwz7JI7Ro65UkLHdpORDU7M3J4ey0CNFXITtxVULCzOqT2FeW7P3YBkzOAfUhE51kzd2O1BcpWWzGbS7pRUxNBrpknBqK4UK+wDbtjwWPt0asJFmlcZIz8yavkArFWTgi4IzbUkqhL2bTev0glINFho8he3VDeknlkmOWY1PwbKtvBTnmtPe4gkVQlhz4lEBFnYovUpN+R8xlTMvWe0LJmlQLtYOKlhqcDZLQKEo8aJlEZIY/fcL/aAnOJ0qdUE5AQXDefWHsRBDV9iSYE4bWTMqEmi83t49gb0Eic5mwtyO07LctMuhacsITVtxNw3k8yjDtguKBqET5BauCZWvhIzU7KazshvFavs+HqhDSs0yfk1I/9FJ9d0QN6zjCN9lEqmTGsupn5T3OO6SmeWS7+WU22onhFcBzkHdDuU4UEEIkcUBnWlPh3jiudZ4vmUm6V9ov1Qc55nKVWePTVPzMknw0RmxbAdsoGaidtf3AtPs05hQbZsNRfhBjAynDYqFj3jwYmiiFjUM8KQltJLJW94xgZW8dAlS/mEpwTfBgWH66CGOUxFHKVgRvHU0kjQO18ke8mQPKNFtrfzfEByPoaf8et/7tGtbbY/2Z9sDye7w+FoTLd3dtgO293J9rOX6Xh/Kx2Phi/SAKJdjyFbw63hxnBrY7hLtrYPRsOD0ZD853A4HJIPF0f/EzA8oVVuLgFHB2RCc80a28fKGSuYovklz5qbx9x2NDYwZsq3suXOxvo5CM8sh5twpvD0c+3OwTM+AQECUkY/b28xt5qIKkC78wo4TZXUdiO0ocqyw3FlyBVSCM+u4DjZg9TdoX26YxE9aSCivfwO7T5q6R8E/82qpw9fd1CXLIdBvgTvzUEvGzMCXIj3EKBbXtZYnv13FQt0Wiewx5ihd3ZQE4pPoTRDDWLKbxionVS41/Bp9/OM5eWkyi0PtBzArTAMbOaSvHL8mHChDRWpU0Nb4kTbiUGmWCJx2hCptSFWUgWcIYzNNRGMZWhDzmc8nXWnCow5lYWdzJpH0bpPJ5Z/eMEBS0WJ4r+SE8MEydnEEFaUZtHdyomUjV20G7WKXbxYlHdsnxdWdgJC8zldaKKN/Tfg1qryeuZJE7fVWVP4rlXGkho1IojcgNX6WSRxN9GY1Y+ABsInjY2vd6xNAI3NL2g6syZdF8XxOB7PjnGvANV/dyKhiewWTHvJMBluqHQr1kJ1QwWtjBSykJUm5yDR71FHDwWh9SuoBJBnh+fP8WA65dIBlkohGBj8p8IwJZghZ0oamUov35+dnj0nSlYgDUvFJvwT06QSGUM5baWvkrkdzHI3qUghFSOCmblU10SWTFEjldVXvY3OZjSf2BcosepKzgjNCi64NvZk3njd2I6VyQIVaWqIczvgIopCigFJc0ZVvqglINgoAVqZ83QBdsGMgcpgF5gsre+IqhgHffQuUZnLoHQ1tsKJBByH0DyXKejGDqLONjl1MXwdCN7tohvo2eH52+ekgsHzRS1xNNo+AfV4Jk4b645Ib7Q72nvZWLBUUyr478Aek64Y6V17S88Da/IyxmbE0rwZTrqWOQFVWBU61lzIXWpNC9fvIthhvs56f5LS0trr10fRWUtz3jL5jupv7rD5Dt2b9lB5uqPaERo33NI8krjfDnfUnI7rgUNbTrEpVRno+FaFl0IPoudRvx9z9IxyKWhOJrmcE8VSa/42PAwXR2duVJRANZgd2OwX9vEIMjhomolg2dlnzv/xlpQ0vWbmmX6ewCzolCgdq+hMhd4/q8I1JvUmqQKdmmkLhzOaPJaMokJTACYh57JgwYypNJqDhqmCrHmXplRrtQNEsYnnSg4U0VqgxiPmfnbmOu7smAVzFcz1CAHu+FmwxNRvcz1FDD86HhwR+QmslKp0ZRHiRq3tZC4seP+qBG4AmM1oCHuHc89gNX6FNJ0hrQKF+7UBJ9d7+oJ/EMfb9PMEjy4cHlTJaJYRzQoqDE+Bx7NPxmlv7BPq5QNUlrxM1EGHM5LccLtc/jurfSB2oUyBpaa5qajbjtMJWchKhTkmNM898XnOb7nmVKrFwD7qlQ9teJ4TJnSlnKbp3MhWQcmYNpY8LEotwiY8zwPjomWpZKk4NSxfPMD+pVmmmNarsp2A2tHZ4WjLTej0nMBmijGfVrLS+QKpGd4JDHNu0aJlwcB9TnKuwb14ejawZjDKU6kItQLkE9HS0klCyD9qzAa9r9aC8BwoOvcwebq/StwXV4iypjYpCDeRsphV6OJFEXiV8PLKgnKVIFhXA5KxkonMqfOoi0tRAwGeF7djtbaU/NsJaqqTfyNZHXmgFobpe1T1aI/Rj9N8rQHIj/YHdLaFCy939tzWI4vsbsn+TgMwJODPcIk5nozjJI2xp0wmKTeLyxUZ9kdW1+7dhTdWt2fO1dcARwrDBRNmVTC9jZwMYbIOfG+lMjNyWDDFU9oDZCWMWlxyLS9Tma0EdTgFOT1/R+wUHQiPDm8Fa1W76UDq3dAjKmjWxRSwu/uN4CmTl6XkQdY072SkmHJTZSh/c2rgQweC9f9L1nK44dt4sZ3sjXb2t4cDspZTs3ZAdnaT3eHuy9E++d/1DpCP43EtH51masPL0egn1NQ9GgbE+ShQe5ITMlVUVDlV3CxigbggqRXMoC5Ggu/Iy7vgAUJK5go1oZRZTu+U5kkupXICYwAejxmvVdJasiB4OSlnC83tH/4CKfXHV0cgvJUmuiWH6zGOfoECBNuUSb/arp9kLLWRYiNLO3ug2JRLscoT9R5muOtAbfzt6Da4VnSkHEy9J+pvFRuzJqJ4eQ8M4YHGLKdnQbfyjA9lwrPTs5sdqyednt3sPW/KhoKmK1jwm8OjfliakwtqkvZie89k/4LXL6ythybL6ZmdyCnwGNDz9vAiWMPkGUumiXPh0Dy22gmaft6707hPCAcgMgCthQk+PzEluaQZGdOcihTO44QrNrf2BxjcSlb2mLbUTbvoUirzMG3TayLaKN6vgsbYsON/L/hAQ/MBSllj1Wf49qNUsK0mHJ09WUYzvH0/ztwe3Eb8luVowxTLLvuUv4fLJmtRzPh0xrSJBve4wDkGAHBZssyDpqux1xnDPr+qL1BQxkTDOQNwIhWE2CTuuSSVxZq14dfiL9o3Oxhs5G5sMmaYKkCSloqlXFsTB9wXFI1OuKaGIKtqnPOU6Goy4Z/CiPDMs5kx5cHmJj6CT1jT5nlCLtTC0qSRaK9/4lZyoXQcL4jmRZkviKHX9f6hkZpTbeDaACON0B4W0hCwteYsz2H1F6+P66vxtVQm1fVaVxRG2GjsfkD7qpwBF/HeAnEHNWVS2SP8W0Vza0uGLcWrJgzpiNSGPPekAjoCYZ9SVpo68gJeq935HbJO4AqHkpIqwyMPFulAAEyC41z2v+531DJqXQqUnsruiZ05paJ2YZEmXQ0iDIRQrM6CxiyX834y7z8TzXMT43ZtPp8njGqTFAs3AhIGngyqzVp0sYVAuFFmVNeRVLBWEJ1hmkFNa7oabyW6Go8ah2/QIOIaPAx5cD4UH+pQj7E2wDMnpGXkPId7D6a47LkttgsIxHZPsICR5SUsY3nu9mg6Z5OJFUY3zM7qCMWt/hm7eH38fIDXgddCzoV3vzbAIo65DLyfG5iAJVlPK9EhSboMsj1vGDa6i7a7BHTwfXNG4Iq3McV6J5Zjj/B9g24qzVSyWpKJfQN4JSIVXjTYyfGWs2DggJOT28QiFeT18eEZxELhio/DUDGtrHdXxwrK88+U9tYQJTCQV7ST7kSWS/bYNN+0a88ubF3XDB5MWnpDeU7Hedd8OszHTBlywoU2zJFMAwfgkf/DCApmXz1F4SJXFpXVjUzyQXa4Ph88Ab7rzTKnxqrHPQSJcC5JkZ/r9sPJukDMqJ6tihIcpoCP2HkwvFApZu2yTpgidQxHECqkWMTx4GhhRKTyQTMX3nQFq+AZXn3AB7u6qyDcUykmuFc0b8xJRdajL0G4TQ9RrSTK7ZYgN0RZz2Yt4ZH5VjjX+cxafOiug6BgLrqLi1gXBdbVXbKSefuO4osR6KFSFCL5gfBgJu+rhGSXZox/C+D1f65d8zEV9BLCbdYGZE0x0H7F9NIOiLHwd+CsDpqQFQIeYib8F7eHTGAqFMGzFK7WYCgwHMRE0ZAeUS8D7z4x7M4b7xB8R24N9J6QN3VgLtdxhCAV5ORoCy0fe5wmzKQzpsEvG41OuNEutr4G0h7FZkpII7af6xB51gTBjasq4YL2FSukCXFqRFZG84xFM7UhQ5gocVHlfkGedET9qvMpN7NXcNB6IAifd5N7B4sdlusaVIewh9yOp3CzsToxtn5RIwjngrSB+C6RZyEVxLGoBcn4ZMJU7B4DzzmHBAgr2C3D2TBMUGEIEzdcSVE04yJr2jr85TxMzrOBv6cE+ifv3v9ETjNM1oD4mKrNLbsa9N7e3osXL/b391++fNmLzhVK2x6EevZHc071HbgMOAw4+jxcoqrYwWbGdZnTRaw4xfYspm1uZOxmWbPWaaI852Zx+XsdWvDFGXU0D7HzWPxgPANwCmBANWvq8OpKb1hrfWPUulpwga+rO2SnPuD59NhLE4DVs7Y2oHxjtLW9s7v3Yv/lkI7TjE2G/RCvkI4DzHFoehfq6M4EvuxGWH8xiN547hoFW9+JRrOVFCzjVdPL6JKcvwpLdXPFzKrv0DaO6Fl4Z0AOf7diu/6mJ1tmseEmWfa0+vV/HR7oMYD3fMuuHTlXc/X97KpYkIev/4ZnS0U2fXaQhUcBTJj4Vcf5vnSuB4TahQ7INC1rh6VUJONTbmguU0ZFV1Oe68ay8LZ2RYtyl7WPZLexkiszdqn5VFCrkDa0XZkxct745Xa192LGNGsnhjasOtAfx1xQtYBJSZhULx+rjllF95haYylzRkUf2n7En8DgpSWo4BwD9B0sFn0uTLRrWRhVsXtsh+juxFBTrSyK8jDLuIuR7mIZKJ0pg9cSzIHSk8BUobnu0kOnVhlO1aI0cqpoOeMpYUpJhfnbnVFvaM6zOFREKmJUpY2fj7xm9IaRSkRhwHgM/av1K/581uOHYedWRRPpjKXXfdmJJ+/fv3t/+eHtxfsP5xcnx5fv3727WHqPKqxEsKKIinMcviGwA+kHflfHofFUSS0nhhxJVcpG/tb9NxkWjWwZCXrH8Vg/N1IxtPrirezZHpLOmldPf7d7SiF0vH79tvcgKRUT7n2s7ADsQcvHwpCNSyEp8kUz93q8IEbKXLvkV/BGQjolS6/R4kM67JDMww4yEOtn4rWf76AnFkRKkwPdMIVXjnRqTdvIGzRjNQ8Vpmlz9B432kD+PWdpGcTUggOYvCPjIDPiL+9ILAkPNpMHXFh/p45HVFnAZS87IAMUSATuXsxFlMhJPEhUFCaSVTOWl5HzE9wHGIkShtbOMSEWVrIaHrSeZSTWKv2T9eJ51lT+eUGnKzVGYqUKJgsxrAiQJTTM6paiDzRDpyuCrKYsBxedtm6dolI1d08flay5o2hN20yDWV39l8a8K9yOetF1+F7QQ5FmV6WI4uikoIJOkflzXRNCR4nCUjkRH4lyWGJOctz6+g5eEj1aF5BBJttIdXLRE1AaqZm1FoDElJ9NjPZKmpzCcqgo+wh9lY2EqIELExuQOgkMPGQu3QWRYpEUVQyhvUlhnlf1rC1Ks7ovwQrZ4CRU53Lc77YUomiCVAptTSSWocyhGgpIxWnRmD/jRh375COQOaK5Yn3bhB4NTWR6moxz5BqFtCBMIoztTXkXgdOMKgV444IrcJsA/mPR/5zHQlillg2145vMpGokgi2VThW0Blc17AulU4VhIa3qKZ3qKZ3q3yOdKj6APqDXlQJs78uXzqmKRcRTYtVTYtWXAekpsaoL41Ni1VNi1XeUWBXLpG8iuyoCaGUpVry0s8VLvyeviDUSikrFb6hh5PjNr8/7UorgKIBx9U1lVUEaT+T5cisFf1iNGyPJeAGYOGZQt/HLr3AVeVIP0K2+XrLUrbT8tTKmso7a95Q29ZQ29ZQ29ZQ29ZQ29ZQ29ZQ29ZQ2detkT2lTX4SgntKmntKmntKmntKmntKmGoFBWY7yz1/kv34NH+/uLLJM8CiEzuV8rKjiTJNsIWiBTguPUEkz37zF9YkAr6b7+Q0VC1epOe4z4cqpSrKmZxRqkTTmWXM9PkJOCBgWXiEfV6GpF2jizOB40E4rskYmMs/lnIvpgYfmL+QYF7CRc3Ht5luQZ1dJludXz13xZ++QkYL8wkUm57p+/xzBfYdBhs+uEi373vsg+KcNUCo7a+/A0gBjkfNx34AFTd+dL38L3owwTr6jEN4W5E8Rvd9+RG97y/48Ab6tlT3F+64q3reF6Kfw31vwZFXgpMh2V8QQ3xzv4hQPgkfP6GhFAJ3/fDh6HERbu3urg2lrd+9xUO2625KVQLU72noYVCvi0A3z3Sk3bbFZl5kvaKn9FVPM06FjqxQk4/q6e2yumRIs395KvOa7TM4bNauyU19VeY4Q20k6a28Bf3Tw0SmWH7HvyvbWx0ctiCVUpTNuWBrSxVYQ53z2gcTTEEPVlJngsrDL7izx097OA1ZhRRQVixUt4DTUssRpOmQ28NmJGYEeiUXJc7YBSQdfVJ0oWRIBturVtmJlHrHYMxoHDt2/ODv8ZW/Xoy+/uptmC6QHrmwv2U5e7g2HyejFzmj3AUvkRblKd9chOrlCkkcplXHFJM5O8KSRQ0EcFGRjA2744DESwUXsL2mzV++EiylTpeLCpYRy1/CT0ImBVh2IMRfR7QtNWM0Me33UGpGiQgdrSZOZ1YFkmlZKWRUTg4Gx/ZZrPwl9m4yiwdoC6DEBuKlNKYEP07qb9nw+TyZcMbYARrE5zuV008wUo2bDmpyWN21uDUc7m8PRplE0veZiulHQfE4V20DkbNgJuZgmM1PkXWkyTPf2h9vpDnu5tTWyf2Qp3X25t01ptr2XZZMHEIjvYXkJh+ELBMAFiv8crnV+dnj69iI5+e+TByzFtbRd9Ul203zO+tYCW/746fDEe23g73fB/4Kidu1uBASHmmh0Sjt+ew4f73CovWp0/LETHr89J79VDA6atbuo0HMWNdO2v7tCRM7+YhzOXOiaU7cx82MtSKm4BNfZlGEfUTesG/TZVSY0FKA4gOevnru2tgs/STw63Ar5FBx0Z9cNht2IOG3I6tF4OUkbF/8OBrQS50yxeu9QTeAax+lCia9ePX9IjkdjxUtnk7VYrSAUnLdRihAV7g28e6XpzM1FtOtipZiplIhuFXwPeldJOtJyGYErpmu2cHip0yv8BiCeNfPt0BvZI+MFOTk6r8Mb3mNLLhwLeC5wythxVdTLwR/95ILM7VsnR+du+Hbgqd1LS2NRM1vsNgm/NFO67HOelsmhIQUXvKiKgfsyjOsXVVTaNBpXX9lZrixwkGTUWQbX9QXlwBoIYUiI6UhBQHKo4g19ozUppdZ8jJd+GXSYsnoerd17ztHt00T6AaWapNiJ1KVvrfeRXZLmdGUJRlgzhGL8ZtgQn9qXIcVA52AXdYiN2joc8fRtL+hRMbLPio0DqCJWh8E+PkKweQgYxYpfPkwaXy2ZyLS/6IRiNsB9/NLjAf0aO2J7NEz8//eudtXFXeI4LyPjqiAt0EmJ7cl0s7ErdY46OSFHbw/fnFjCHzOLLPt+fmO1qYgJra9rcoU3kzUrMVFamRS+Ma5UiulSWhQHr3M0CJy/hJwGniSk8WEq7TGdPkOuoK2ez2G6smKERbl50bZAzNYtYXp+a4xZJmDjtpjVC3+9BuHEN+C+tywaFgwY6N0F7xCl6Szm4GwCDKiR/8a1pX+WJeRXpqSvVVOAQ3HmLviQV9YIHNdYwyl68pD6CXWF9aIuZnWtqEfyEqDNpjuL0Yypy0lOp6u7m/E3q1skZ8ZaKJYd4swEZm5UUiqx12xdVOiAHB4OyMXRgLw/HpD3hwNyeDwgR8cDcvyuxw37z7X3x2sDsvb+0F+63lZN4ItujV0Txm/HV/hUw2VG5rWLUsmpogWSHrrOTETBGNvJlGvaFw0EaeElrxMkkS3oHot4azQaNdYty56EkS++eHc/KgVe4qCihPUm3CXJNRcQXI16aEM1JaRgWtMpS+KgP67hTtjhrm7nicG6OAyquoAZuLqOx7wVR3/7cPL+Hw0cBZ741XQC15jVyQk0L+4V/w3W/SXkP4i8FgixZAvO3Fa9UCHFBrggoGN6OqOKpsYaDs8waHh7CzKeLT7IaGvveRyDK3XjjZpZB4MGG+UyndLSnh2qGRkNQUZMYY6Px8fHz2uF+keaXhOdUz1zBtpvlYQs0zCyGyohF3SsBySlSnE6Zc4K0Kht5jzKe54wlsUjpFLcMOUSQT6aAfmo8K2PAuiMuRu1h0nRsJ+PSXx4tLrTlxDxlATxLSVBBLr4ytkQvOEMcCu8K4Whwyy+o6D9+Xzej/SnCH1kgU8R+g+L0K8J6OuYAc4auluDODw8bObBe5P08nOSRg87Hrc8J6dnVmFjUFnzKvZUXLVcCf7HK++5c7TDJxOeVjk4hCrNBmTMUlrp4E2+oYozs/AmUEypBTXamn52KAdWQk4+GeU7sgN8UX0XD6iZMQVWP3gyI+Rc1bopvWYwuPdOYfe8jH2ybxeWSuKhUS/Al+B3RjWHKMkwYt37HNUVq8lOZE/t7/V/rkXOEWvX1B9HbQPH67tfQ933c/Vnir99B3FoDehWeCjW41MRvPE+XCgbOAxbjRQIrym2oLd8XfUu8uZDGNWU3zANXeWje4BGm3l4LFUsDtPLhA6jTBC2tkN/WShqALx33vnuG0C05pfClzcqmXLrfyZL9KLmCzuEljJIFGeT4bF4npBDkUEzgVSK2jztVOKyh+r2WwXvl7fWmmMGHfoODtxQpDZt3NecHN13X/OGGboRO519kUPnVV6+Pm7vhXcUSKPYbxVXLIN6oV8guubk6DzcfoMAC/i1i9HEyIRcsVQn7qErTJfxYNTcD1Qi4DmVNljmF66a89yRUERpv8yYwD2DDUyV1JGmxkXGU6bJxoZzgrqLCAuQxafO+XRm8r6OCdFq4P0osDtncPdt2FS5m2aa/cuC6hPS0xkraAv/pBFy30M6o2SYDGPKUUo26mmehC+WDp+nIrpVc9G+QL4L8F4EPH7QDFk7KA74nLvOKUsGdbRyhv05LJo9I4CMlpRa8TNHsRO8Fbj33GiWT6KUXIGjP+BObUW1QQCZ6NppXRcggHd62laUIOMDl3ogcO6ke8CIUlx6FutdUo2BtaHp9aVVK76n3MELDPBNoU5iysIdDmDOEmWZw50e+9RqYbuk0L7LzxTL5rBbg9i6cLUEqdaN2AHMpw81IqKj/y96Q5OcimnytsrzMwm3Byf+8Zgn3HgW5XlC+OJunuDOY199XQge/mRuSTTIpbc7sBSv4mnjbAcWcmgfJVBuyBUZ1J3aj61ql1BicIbnLvCaWuV/LQOnAUHgKhbUOUzUhKstMJnEtB4j9DCwE9WLcOP5oahPDbLUBOlN2K4I+yDV1TidJxwtk1CQxI3p76XBiItLcQywSqIfpO5ATcbMzK2+TuOSk7RZnBIn44IbDgHcdqtyqe3aDv1O3I9uqzeFAqRwoS0qrHGWk4JRXSlWYMspkd2C2egxCBo39JoFGo7RHJNHjeOCFRLCQ5i2w/jhshrTrhToDQ88yLAC3O+VYgk5Z7jnV5isZgXXFS6bG9f3AA6/D4WAhMtwwx6OcBwp4CCFQp/GGtwNobxc66clipw9WvfH0YPC768MXLZe010RynthaF4criCit8gpVMQGEqhVyhkVHq8pNWwqQY/344fNtQzjChCyQbPsakCu3LnZgHPD4KsJz9kGqu3ZFd74+HuPBtcHfT0KJnERhTlQWF/DqEoztVFSrS0yNzAmqKkjONBXsx2YTAUHaUIm1qyxuuERzulrUGKUFZrKoHVSgztSe7XA+HCuKbc1diAPPJlxpqhKZ3FMentvanUOt3ttzKdkXEGlpDULXzQiZ7rpHos07Nww5bhda4oDt7NXZOGERVC7sZGdc1e5x8KYkILDzcLdeKGmzDXyrHwRN8FzM9pNufJhmdy13qJxlTpdjT1YbaoP43uzzM0LzjCa53JuIbS2YtrcKCd33JIinxo1Vt+ArQn2Q4TJrqlXmZlV3aJyh7frrF/ONXDarHAMGmwIZXOVp/kE7WXIrowwFxUJ9qFUlWZBaGRMN1qfOYVRk0pEFYMHRLEpVVke7z5wf3iaWD2msn9IRezywC4D+wgFjbxhCqQMRAx7lclrcDzeEuYjJlHPIafH3W3Y2dvZbyIfOdA9vCCrnQtN/LrTgIN0eh+yTZCPc18x2hVMppYgVZScpRgF3mapcwp7IpX9DF6RkpdQQPtWms641SFSV/bs/0AZZkOLEtkGNfFXdWVGB2sDfwAtQ7ehL1QeXT7nHZFyKkhhRbLmpkLjduBCAc1ckjCtO2hj1mNCI+v3H9M4+KQR+J3SPIXkNFdDLYcoGFSMYu+RiytwcZBI4jWTiNUW2BZ4FZCOexKyvzPCjeMSLUgKKbiRddxdPcT6Opi5fsfsR9/izkhyzVhJqhLvA+Cl+HA1sWrNZIS0iUcrWvHEpTQfxDtbX9ZGhRtiX+rWcLS3Mdzd2Nq+GO4fDHcPtneS/d0Xvza9qBk1VLP7at99fjkUnKYVSCYaGME7ErjWxsh7q37IqGmcNSGk8uIGKzPStCFncjkdODsvl9Png3jyIEWMdDrOoi4BHp3XVBZR4TPsrVqDDZsOWQcF8GzI6xfSBE8VDG/1nsbcYOqFoLZCZlVekz4WuMHEf9R6KMmkiWrPx8P0CJuSpjOWRLgI21upZert9tQ2bL3JRVmZS/+joEK6wDVv/1UmfoDqNzzPee8zeFMGNDLqJZxjN3XDJ0bgTi9M26Qk5FOIdXvm8TOzZpNi7jbR1Ld3jTjEPl7kGQ3MLjJvCtg95Z3SO0wsE2p1m0ipQe1Ik7YgQXqzgtN/79WqALiVNXD5J8dgLraavawwCehnqmfkWcnUjJbaHj5t7DdR/s5zuMWjcyfJDDRLoHjBFPl4Cim0UXb54DIAR6rVHDse0dBms++vwx+Pjr+al+702K7Gm1p3lE7ZpzuT3eEwa0ImpqyboL+8TnIRZALQReCqVCl+4wMmGdSCVjR38Z9Gqo6GAbqFr10CysBVLXBiXbxFl15dyBchnypxnLKWxLmWndEb2lQ8QcGoMHEOPGbXWHkdNaghQYEims57beBT4YxKe7rQ6LdmmNZVYTUGIYldG1g7g6ApONnrr5pmSgqZy2mjgIwVNfLa3+9zfdDAFfl/24urv/HbfbWUzN5NRsPRr0tn2l/zNjP6xuxcH431KEMXnTt4Q2gH2vCjtH2TkDbi1Yb4Z9NpZ+K5LobSQOdJ9ONFF2vG9QYIF5y136TXgnbhvN5qQX6Havu04npGaM6U8YoMnIWGd6wVQIBCqzlaS0fFNZIZVjDVGH4KEDRStSIBR2ZUZDlECc7YAq6+5tZUFiY6porZNYOzsv4S1QxAiJJ5vWpuYBQ46dArDUKptLHEMJ8xyBELAejYvx4u7gxc802rnKoQGV+bjsoqVz0qT94umtXQqVamyOIsUU4IxCrDWtqaorvlduYDGCjIq6oSE2QdWUEdXWsiw9BoUeTVFDSBrielvmancBKE155RHz4EVRDk7/OBPzc48lUrkKxhCtZXEeAGtM/fpmc2sO55/yrw/t4ydfbJBOeBJWdhuAqn74Mj/zu0hluMaKuxQ1ALQ+0uk+ll1No349pqJhk4RrFWHpizkLbLsprorfbvAnEgptcozm68LX11iXvTw+rPWUlGL8lw/2Br72A0RE/30cmrg+H//z9GWzv/zzlLK7sA/EQwcRg6pzGF340S9+ho6P6otUDLC3QF5xSrPGsjy5Jl/gX8X63Sv46Gif2/Ecm0+etWMkq2ki1dmr+Otra3guqfsU99wkZWxtpK37S8sRbVY8WNW9+VD7TLmIBI65iZoRCJ/K7UIx6ud2ozkvLcKjLBx1Iy5eOog0iBPhvow8H0YtdTra3VvJXG5RygxufTbaM+aCTy/WcNryUyEEzRaslCy759TaCI4dfirIWYgZUFzomHYpLXbpJogRHoh1Y6iAC/100phr2BXChl5U048iysDT+7PDEU2WHQOvYWtTS3RjD/64J7dR5rKHsUDHIUsXb0SETqEFSFvFreQPGXeIOX2tabOHLEbWwclfWqUkBPNVqEy211zB68aZA7axVerWXqLv1wH27RQkyD4dWla+zgUXfC1s2tpQw/q5nF3vgDq2RcNbqcU7EIWgzYpRzS/jxgJJMMWW1Br+vd0UzoHuni0NpgMStu+L5+HkLQ+s4Z+pXhVKHE9mGy5wvtnFFdN/RrOY3crgXqTw1ZW8e9eVvNi5meVj5Ey4mZU8XuSqNyhwU0gPOFLqzCNjOmzJ6DaxlOlq7GrnucG7hd4zGM+Ayr+gzqsjEbbokbXixtHFbWmhLT57cVOWpso2JUr6y4yvp7GJ3MZ4s4ssxf9neZVNcD23NVakcDvEHDghS0U8daLUYdgYc72MZtahj3F4h7cmcI375q8hQ3ZOAf7o7GvYJ4u+pp0oSLdcXt7OLD1XurmjSZs7E9Rp98YLpowRMNaU9vxgR3YkcxiPGutfogG1rgBTba2GcEEonyapzL9JplRHPDrnqI5gLi6IEjUUEqwXxqZFP/vdcAhpKqkS9vBcTmJiAf3r8mORfXPkL/7qqcni7bVOdHwTKwEHDA0ziAQfpOGGEEchiZj4Og+DSqO0QW8wHYSlZYK4YStpACrvZA7IbrQeyv2dkZX9DGdaaMciQ2YY7N/xgOwfG29BZxfX2pIz3xNs1xkkvaG7H2nutrAiOAsaS4VBwD5dvMUDt+RbTMK/D+RJl0HzRzV0mwNLjMcRdfqA/Y05vcAvulkKpYgshuXcT6W3BM8d9ZBsPes6ABRsTolMJ9aFjE0NLNaDjsceYVlLtivK5k+EJWsO/N6xUnFZCbQAqvjgDSzds0O8TcOec0s/Qk6mUg1lyYLWhKWDy45TDXlq8sd0Qf1tvq3A3s+6PeItYhPrD1KAQbI/z+GgouYnTnUnwAd4L0ullwgH2iqSFSZS5yIjheotvx+G48HOvgvA3XIh1s3bCoHeAXaU+F2bAY6hUmaJ6fhtC86/byl1BYIBgMYcS4AEGU9oJP+UsWH2xAo+B7z5104m7cqtIL7ygYKOwEhI65WTmL+lJrE+vejjJjvxuoA1bb6q0C4vS8sJ4xs2iG0mZXuZwmGn5P/O9JKjN2lXjm67+uRWzs2q5Dr7ESj5uio6w0rkiRq/n2avXRPD0+f95qfe3eCCq4I2vCjSZyLsKMmFdhZXydMBHGTWWJIVi3LzeK2QkL7kqRF02aNnSp1nZ3X5rhjdy912YuCC2+OIsoAi/Q6iCNW27O7Dn9vW4VvYKcnrsN1caS7IGoGYfd4bAg9Gu5UFgHc1MfyRWjmdfLnLD2hF7ffkRiEg+gJw4ssDfnumHVpykrMTs+TOrT1KCoBbXHXwow/06P3eRrJ5WSJds8LLRhKqPFWpQ5T8djxW7QzvWPn1+sPUezk/z880FR1MyE09w/tTHcPRgO15632Gg3tvsb81SZGVePDACEWLmmE6oV17amq/EGRgKugaQfIElhVF0kO0itzHeiC5E8kacPCBN2v3UULuj4aga37TJyfuGiIIW1VHZLQel0jh2fHegaJN7ir11pIJ/zLS1K1lZVKrVMwZ/H9YhpmQ8Cxobagl4jk64jdWWP8A3Thk/96ppeniUsC4GFMd3QmJDDxUbGSjPrjI4iyd2A1Q4fvNwVcUqFSz0UYHySMqcpu9U+ucUuqY/8Z9knxaLHQoEpNne3Xowylo03Jrvj4cbO1mh/Y//FZLixQ9Od/RdDur0/YXdbL54eJtxdMbkMi1f+8x0JFodYYrkVjQ/FXjq3k5DooMnY6kXNUEWXMGB/hchNHyJvx3YL9/v/CmpQu+pwTu2KvIZwwOG+we+Qz0Hwn6nINqWqF0saMVcDV9UkuKjHC5zy1N+6kDf1ndc/X52++R9fLVPX2QZWyPKU6ecJvuyST5zDrxWRD54SyFhnGWKztR5/HKOYBOfVfFDUPkYCfoZisv6auhgFF7KQYyl9P3SvE997e+ut1Bg8CGVhwQuFDuee4CNqjOLjyqysVVBd0QrxHuaLxX/40vXSBPZ8Q9XC0kZoBEZ+ZgqDJKGiDvs0o5UGTznUQZATJ1ua3NpyheAN8tkc7nhCge8bNoBrA8hHzwZ16zUro6ClSXxhxz6xtDJsQGY8y5gYQDAu/itFvhg4Djkgc8VNj5d6/Z9r/tm1AVnDp+/tePTU4+apx4156nFDnnrcPPW4+XP2uOlNLHmY7gB6EIwDyiCUDF9SXYB4TiS2xvtNZSGNgie/lHZTKwRO56IY3wV5eP36Dv4WyhrDMG4DUXOoSvDjXBV2qitn8nF7VpgmV7CK6NrKpZpgFhGWXQ9ePfvowFqaaRjOW5Me7rh4ewtfjazTLy3ijmFwFwahWxfD5rYOJTqjTRC9srMElHflrdc9ZkOthmC25BJYVFx5N862zhS/iQJuoOqpcy9EJn9nJZszWbBNmnsMhxXZ4S5xmM9FfS8RHytQObE66x2rbToggAErlrMbGnmU62aLvTGbUZJOWTJl7Vlk9A03HYjJPDj+4xq2y3IfQM0KG5ggbwqzDAj7ZIH34i5nFP7O5B1hSgHJoB80auaFga2J6cx3Q1Uy/f35ADDf4PmY4CBi9IZ7+Gdr09/XBoDfNRxhree2uXT+Lo++6cqq5Z4pXlgBhR2ST4/Js59Oj5/fecTXR8PhqMmIart11RC221n0tKttH9iv2t3tD2rh9gf2afsDm7HVGSqrS1k+tWPXvmvPUZAb10zDu7jaZ2Vrd297f7t5WgpesMsVFmB7c/rmBLMLvDT0OdEALRirzX5wimijGIXQq/HCRC6OSkNhkqhpEKeCJlJNN/EuHtKiNwuWcboBHur47+TTzBT5P08P3x7WImky4SmnOfqz/2fgRJyv5pdgUayeDEurF5Vgj4xdtcwwJib9hoyIaOk+/3RZQVWsjpLeWEKK0c4Fkak1JwJ10d4CO+vDvZ1hi4Q+U1PuUZSDhkshwB5MmuYxW2Hjh7ftFoWofISqVrVg91kwaI45pbCDMi+k24JUzsXKgjXRrW0nWAfPjoJk2Pvl05INFL+V6lXQlBH6MUb20aC1YUGP6lHKG7pSFim7D1PKN2/b46f+jU/9G29f7VP/xqf+jU/9G5/6Nz71b3xA/8YoMo7//sC42B4/jR3EHl8wNSJKfxf7sFAZgLpsLoCIa7JmP/aUfx/tbe/vNABFcXz5nSlXF6hEgHoFMUiLAkJkHlUH9NFKLBhQz5DaMq4gsMNB8rxDZSEKI8QkrbS1k1WswU/1AfxUqg6hj2rRPjtvObFQL1/GlfVpd/gyoTmcQsNvkFmt6hr5tYsrcBefJJrXRSo8Oz98+zxB+wgM5hC20HdVSyszw9B86MQU3SXBlo4r48KX6oJbrWL5x2/PSbxiQp5Bfrw7H/o5+odZQXlev9dF7F8SllNteJqkcuk7KsA917piKkE4lxUVn4N8F9AFjPbZ0VugGwsE3MZHKAzI7azWVZoE3xj5mU9n5FDrSlGRMnIOVVHJ0eHjkFAJs9TdyechAGYhz46eYx299vo+nD8G+KigBMu+hMw/jgd0+3X8mP06+uuH8wF591e/b6ciHZB3H/7aag41IEdv/3rH3oYj8ll7nMuU5p38iS++yX4az1deP++oQ5YMLEf4O2fzx6xEqikVLsB1xauJp9Lk2bvPOLSnIv3cxdL8shJ8VSph35ppTuyMdukfHrH2vi5oD1w/VB6+lOoS1NHVJTQGEQmVjiH7DOcLAvJiQM5BRTnrkPQRzflEKsHpg5YopLkE82+JNd3mYb3oVKKOtwYqfICWDMak0DyDjm0QvtLZrq3h1nBj+GJjtEeG2wej3YPtl/85HB4Mhw9eFXZlXeWyMElliSWNXm4M92FJo4Od4cHW7iOWhC2pLq/Z4pLmU0vrs2VyHh9Dh4d+/OA68KnuWFcB+2dds+5he3/+MLkQLSqt1M2qDhb0v7Tj44J8ke48tw+k7qd6WSQgGCMPgvCDLnUeN/4OpoMEwbUpd7dGj8UE+1RKUefKPcb2PHFDhA3MGDifW9sXgjOXWNXe7u72C4/1dhmaR6zyM61rSBy1trWzfKLd0yVN0ebmpquubw1dGeJlYdZMcZpfYnLqigjUFS/Eqeo8WF3V1Nov7aDCQEivTBdRCbBJXGYT9ricUZdoOmg2q0ZXng/gl2A65dAuR2R1uEwYuu6h2sHu7u6rH398efTi+OTHV8OX+8OXx6Oto6PDh3GFEHK4ck532uzp0ghkDnGPETf4hdX1ZvG+uPaFgIieQMEcLshPkrymYkqOIMaZ5HysqFpgjwTv15xyM6vG4NKcypyK6eZUbo5zOd6cylEy2tnUKt3EIOlNixj4J5nK/3i9vf1i4/X27nYH/xiysPFQPuyM8j/GEtXBFPVgtFelZ1SxLJnmckzzoM0JtvTVRGuRf4Sl+ZmGpgf+a1qandh+57rB4li3mJrnF3+tVdEBef3XcyrIK2tEcp3KyBQdWHMkAcPzy+7vN2NlNlb+qKX80WbmbQeysYWfvbJvwKZsLfRha/kz24fulnW16s/f66tcO6nTRzpUt3035CFCk+Fhc3mhP7mPd6SF/sRk3IkvpUotsKQoJjnROuAKQpItrFGblJBb0cz9BeV6ymR4Jc6eCl2LsTA0FsBg6QwUwbq6mYXs9MxrdVK5+1y1oauyzHnIlViqQR83i1XlGx15Rti9eZTCKEabRcgwl5qJleU/vW3kPbnJut1ipTIzcohttloAgvS+5Fr2NLX9MihzCsLp+bv+XrZHh70grWoHHTi9m3hEBW1lO3iqvgeUKZOXpYyjSGKGJsWUG+jvJjKSUwMfujcs/5es5VKsHZCNF9vJ3mhnf3s4IGs5NWsHZGc32R3uvhztk/9t3m59Ad1o/YM9aj5VvBVOQwMKBj7PBYsryAmZKiqqnKo4ZdHM2MKyFoZMJboLPopbIESX4Fy5As1QYQf7u5BJLqVyJuIgWHndqnQIXk7K2UJjIU7Q2gbABlBgNPMDokqJ4DXgwtqZsgAuF7Gx7o30WGojxUaWNvCv2NQKjhWeoPcww10HaONvR30wregIOXh6T9DfKjZm6Q99eQReToUvbpdUFzPmkgOiBpE9ZYzgGV0nbbeSZeJyRsu3KW506f/igU+NFjUhA8qEBUNVsIK5YmJxydZGjUVBXh8fnllJeYiVX+tsKoQ/7ttyW0OKL+3X6Wkdi4vCMvguz30zZOc/ho99rpQEgJIfehqUOPr82X++p4HpDHuNAHnWFFnXGoPfg08l9LPkqh0OBnV6gl9FeZeBfZ/5nkNvjncHkCDyHOi8VMxx64QcZpkHYxJKXWBImxtivICa1Cql2gfzNoFDZky9r8dV0YfagJqVVFEjlee4VDeq6jzTgl5j2ZQBwfqHM7p9uTvaev4Ale1rp/J8/SyePyaB52vm7oTzJHWjI/DP/vOd9WqgOEy7Xo0rIA0hcZXB5g3aUBEVzTs5Ood3k7/4Q3Br0e1ufReYFMr4upuv2L6JqvlKhYbLfS1oYa0upqcZGT+jKptTxQbkhitT0ZwUNJ1xAfE5Mr3GK0NDuQAFyB7F/6rGTAkGFU5kxh7UC/bWWPkvIv/ftao4N+brBsjv713u7fxREhZloZxEe+dJzYvZ22RsnWiLumcaq692kPV1fZv0DSNKRd4y8+Ppu/OGXIaZXnNRfeoZuwY6mimMCHLfFynvyd999/bi3fm7gJl7nB9TJpNvyGAGcL51oxmB/OYM5xisb8R4tiB98wa0BfLJiP5jjWi7B9+iIR3B9Uca003taglI7iTUn90YsYRp9Butu6KHSrdzX3L5ykNwBYaKPY+KmUoJ7a08kK9OvbnHAP0y9VCd9YlyPa7/cqgDvnwDJprP6UKTCl4ZQMlHVzE6OBEKRgUXUyhg7rr3MnHDlYTE6LhXR+gkgHE3CiNRXNuoqzGjBhjLVRsL5T1YCA80213C+sp2iHawoWi6AuT+7DbztllXdCoaSlyXPuH2wgW7A2VGVBlR4wfBP/mC8I4hQmuq3yqaQzJ0GDPSzUDdp8ha3XVIHZ1SaaYSV83dGskkYynPoEGTVS+BlGomLu3zrc2XOpnQguerurZ9d05wfPLMX64olkH53YyNORUDMlGMjXU2IHNUb7sJIPhkB+4qX6Y07beSeNMxU3B3m1nNIbsSEwBvUVVpavH6Rv6L3rA2VqLeMyvYzfYacLYANpjJis5d4f0O5DvJTjLcGI22NsCW5mkb+scpPt/ansYVBBxqbtvE/25jwHsjv9YO+vnc+bT6mtQDUo0rYaq7ziRVc945k6tNQu4AvyzdjYbJaCcZNaBdWTl013S1JSashX2UyyoLxrK34+umV05LwVQqaKx7ZbaSgmW8Kq6gucFN0epu1rDUg89mAJ7b2nXgk4rjq/Barwgj9ukXrWrg5ZJlQW4LID3H5uW1ZhaKPaMbvLlt21u7zemtvPujLkQgL3CV9yGwOsh7+0zbz5p+zQS6pDuRFZ+PjGT7w/itXdi6BrXJi88JoTeU53TcUwzjMB8zZcgJF9qwFrMCHODty5/3hi1a5Dd92RbB+bXv3VpArLLIhMMU8BG48YL2BgpDmhq8eQI6PzIcQaiQYlHw3yMDAVEYPn4IDa6uYBU8u7KUgh+8dYz2SSrFBPeqXVhaZK7PbxjWl7bqIaqVmM5dUnK7BVN2gXi45+EP41znM6l8qQUoxV171OvFNYo4jdvtveE5JfOV5YqHOvdAeDCT9w5CIa9mM7EWwOv/XLvmYyroJc0KLtYGZE2xUiqrrl3aAe+tEB98SsY0IjR+vrg4g8+339i98vfeITjQvhR6G0GbbHQXVSr3bVw0wx5uJqIZux0q9yt17R+Xj9XwL4xltkjiMncP7PAWv9oko7iuRQtMArO292V//8XtILqKbN+RBnDhvCa4wXeu/GeW55LMpXJd/zsYWMH+XEgs3n3HLj2zwAK3nTFqzYCubTXa2e7ftIKZmVyVIF9voBSnimTMmeIS+s2dHJ2TUbKXDF2xxzyXc2uTTSueQUGCOQ1dTLKDeoA12Lu6gxIpKg095aP+iUaG2BDse/NbxdTCmnRrDT+qnNRgoCstzA43CqViruEOS2nlDn/obembbTcKPMJ6fV163zEShG9BofW5YdAuNiHkXWMgX367oCJrNCHlAoDcSobJsHPx8NPJxYCcvTu3/36w/8jzi/49X3Etz/U33FX+8JQKBNpmgWFVF3V6G2xgT11+qrE3j7dJoR1Nl1cNIpZg/PNXR/jCxgVU5MEzkpAjWZRUeTdZEYNMw6BRHxwSz7a+rkk8rBvVm94zlpdut90uwzSK0bhdDyEF16A9TaHOcppzJkxPdwFe0CnbnPKlq1d5HEPnXrVUuP9d1t97N0zdNyo+2B1m49PixrmcNjpHtWDUpRSafXXRhtMuK9tiIL9/4XbX2m+Xbh4HX1u8OWgfJ98c0H80s3NgfDluF23hF2R3btQefoe/PIbhNbhbGBU6gaovw+UccrErS8+l+uf3P26eG9e7pvdufWfYjAFbreMa4LrtJmAEjum60rhhakJdNpszgU4bX94dqB4GiIPVfUECxVKpMsLFVDGNQcAM/2zOSxquAaiTh9Yc3j1S4ZvEqnZDXqJkBZV2c0nt4citUqaeh1HrY/IpHJMw1oyKLLfESENHvlQKERSvU/c66m9uTOr7aIZhahQgcH4szYSWyrURL6kgdkXP8UzHcCQOPz2o6AnnXN48pDmnqzLeA4ngLHjRWu9Y7YIb9ATL+N2rVVffYtolpsJ1gkUlh6orAyIr4/5QJCt+B49GCh4lD4agRd9VjHtxWa6xMrdlja/T4zayGuRdY+v87Zuzzjkh5PS4R8ItXWVmhf7O03gv2O0U0a1tbmb3wF+no01jPvXafbwjtvq4E/YcGjr7BnUFS2dUcF2QqGsdFL+10EeJnsz+WodaW0ZX79a94dad6dy4nldiPyvfCjTMH/nAmi567A0eJsJO6X5MiM6IW4j/5aqxEP9W3WKgp+d8a4VWjbCLYFk8/l9CP9lxZYii7uLP9539C3iGuXA3gtZARfQ9IKAbKqY+ru5pq1Zru9K7RSBU02z01i0YBLy3giXCAbyrFPxSJeDroxy3j59TLdbXDTTGxIB7GuAbkExiT3lHZXc26N28oWozl9PNSSWgkK5O/MFZgkPERaC/6E11cGPYVYX4T78N7Y7KDjfNDl2IKefs0Q5BbigFllFlDYbQaN+06jqB1BWuR9JUQqICkjEMgpfecA6iZv6wK3hQFvbtWrH2ffzLysSnJ5xdy2U8MASagqCC4Jq/+5+eR8s+hx7auJPIYq7mVImrAbliStn/4fBPrSPQvKf7P7TZbG6rPbnqnn296/RcNCNu3YBOQkODN+xlgrpT3RC0AuYRH6B4lDSn2sePccEN9565MAPIfN9UmaSVNrLoD1SSauqLtGK58GQspdFG0TL50f/VQAq66KCgfZJzsYxktAK5RmQHQ3YUX9opLtfr7sO8ieXIC4KucPHOWxg79FpHo7Xana1bl7JCIb/eJoMvtbrwfd3EzDT6wVn2F5JgfRvLmIljZCLccKYG36sn63/FjgvHP4iYnrMUSCf5F72hvUivRLrC4i0dlLvpXP/Hmcw6WL6HdrgvxNJcCF0J3/esoOETt7AVTEO4MFwF+1BrH6caPxG2Eas9El3m3GBGnCFVaZl46GxXUmXicP1TjJVV0B8Ipf6VG9bfzCHy4qhaKuzuQfmzDEaszb+acN0og5hOG8vwix10FpS4MN4wJvRWoLmV/QuirQzAjkWpM4go1gHBKC0mUglaiVREsDnwHKtsF/KGNUkeur5WZRvktsOpccag7B/LYFcymV66AHErijKu6ThnGdHSYj6lIBrHDK5N4oDisY9GBE+WY96KGcVZqINydYlsoufEnbOSjF6S4f7B1t7BaIjpGRC+9WZBalWmU6AwJH6CfF3iNGLP/tvOnBPTocVqrIQMfAfdoLyh2C+4iZncDadumISc5YxqRjRj5P2rI012d7Z27BZuj/Z2kh74kwlNec7NIlmF72o9WqGrF0j8hB29rB34FNZ3mKZSoYYso1VZ2rHLGsTVCWtfBhVejJIxM3PGBBmGIe27W9tdotjavhNHK5R5EaasirmBLtilkdVaBxDzi761lIpLtVxJs4dtdWub/Txdgn7kFrN6SK7JPvlLjZz/DFpu0uQ5ofylfV8hX2efSpa6iIrAih31BEKBmUcvRz09M7Z3+9AaAHj4Mbr3xATtfukT07D5nKIEZU2hcU3EMGIzp66r0J645jSApbZ39PT4/PkgtmisSdIB3p3MqbSId4a7//EquRN0ayCB2PAGkgVWGy5SE9lh1lCyUkCWaLFE/WVTWaJzqGUU9YLS2fJenhA2fNV68B9NDGHCZubNUkQADvFbKCAyiP/AzY+g6Oz7ibNvg1sTXe6xc/Bt9NU9xUy8w75ZgQFvDoqiEk4NQ9eRvIEu1lZlpHW5B4LKGI4TV1DQDb+be+JR9Rr86D7MzA1LtZYpr1+0uutNHUq/1EVBbbmv6rgcogUz5TdMYDW9eFbnwymVNDKVuXMfeKNfjblRVPGIcLBVq5XCGHQgphp14wI6RDF1w1OmB6CI0lxLmGyBBkD9sL5elJE7h6e/DazkYmMprwfEzK0upxww87j7qrU4NDeV087rnuY3TGRRCAd08wFY6lKAVgplofQflgQMNvNmxrQhp2fY3kcP4MpID+KwkDlXLNROjGTqZwQ7Qb1irL2QVuEaJoyt8UKMrJ36axrLnE6Oznv6VlFeNEirJyygY1U+JCRgHWMCMBYAO9QxpXBHxtKeG4hTt9vS5LNXiGCMU7gCJeLKItvay1yK8L1i5FrIuRiQK39Y3U+oqvB6J3RV9Eikvf0GAhwHMYvLld0tRe0EveNeQA6+Xxw5PcPLV0dNVJM5y3PH5MJ6/PGrk9qb/C+qJE+MlPkGnQqpjZV8hoqMKqAx35s5DDvJm936+9v/RWWyLYHkfDozmwF5GzzbsEKmR+k7mL37T/125+f/fPPT7pt/bO7PTtV/n/2W7vz6t9+Hf21sRSCNFXg51o794F76e3ZtFJ1MeJp8FO99UXGWkdqqPvgoyMeAnI/kL/66/KMg5C/uvhz/5mIsK5HhB1mZ6BN3bfbcS5/8p3hk8hdSCSDuj+KjwK7UtCztYQaJof21g5VqzsoppOBGQmiIu0UfxEP23EfULA1qt2gCdS0sVm44mw9cka3gHdDk45pf8Fo8tFTk45pb/VpyJ7we1VKRkileMMNUB/54bL+Uu+FvAN7e1jBRAx+9i8NtWhuQj2th0+BT2LQ1t1q/bREiko+i9og2XnH+GivvYNYAEYEpoPMnFlPiGj2nMaTQLgIrYbS0HG9pmbmELdSgV7hQijBJgo5aK1wbwyKY9UrC5I0Z3aHomcsXIogH9aN5B14ExEWdlRjlIEYxtfbb0/MzTaSKh/z72dsgmkOGZLLWdZQCLhtsZCLVnKqMZZefU8qg7lKHN4SR3zz6yblNSyU/dWPyRi+3klEySpoXAZwKutpCzqeHbw/JmRcWb9GQf3ZvS30vXjYQuO4X2Fz/eW1znDuxAupL7upi+7e023ya86lwAg0U4LfMvMrlHChfw18uUSOMm8upv3Pywdp9a+p2R2kiWizXev12J6MzURIYKQ4roFnmJHCGvXQt5Xt15Canwj0cO3vrswVRWYKpwtLZ318fvkUK+22Di43f8AtDMRiBa+JqNybkMLfqYZT0hfD4m207bcLRLwx/uytwgD2CqRU1YHWJWne1cGgmMhdiATwANi347/eHW8noN8JESktd5U7DthZDK66qZe7+ytj1gPzCFdMzqq6T5wHh94X82AUkbnUrOjGA827gTyMIrHO6l47piVawQo/HO2e+42JuC/G5dTkPDMRadV4mGqLjBZGQ5C8V0JizdHRdVcofuvZyfoIMgF/4hDfALml6zcwDDJ4+48YN8ijzxr3bY+DUv/SYOP7H2hZ2xk6/kbPVjGb1LHkFevX66xeeTdb2CXIe9ikB62FAcmDX/6KptdpD4FTwJnx7VnLIOQxx/h7qVaDw3J1Vv9mRhoAeEkhYp1mkvf4XzhMfQ+I14BrDOV1YyV9l5YCYtBwQXt7sbfC0KAeEmTR5/u1h3qQtxK+oLIcLHX53fkreyIzlaGDM4/IZnqxfWywmFnc7iMHII1Vqlg5IyQtA6LeHTgt0A5/fsxz9M0jQENDhRoGnnUf8XfzdXfWIo3jkdlFi8PTT3POSQehWjoXDOo7kjIGJVXcoNCw1Az8+xnZh4Ou9I2401XjnArByrmBG8VQ3e7KEUjUhaMyXIcZBIXsTCh+4pYLlGerDdJJTjCSqEssjgGg5MXa6xJfKa5dF9jc0ekDmbAxGHpjsXBhVQaGhkAW6WSpYL4zrS7p5fbj2cfzgT7BVkN2wMUjRjBDRkEsNBkBnaIvVw7M3IR/nh5rtBPqM7jAopqTecoXh5IbPB+ATQkVITwKs4zp1oAvtw6CRNnSt/N+Bb1iFGxUjoxRPE/LGRRn9VrEKByYnF6+hqjZ0z9TB3VkqmTL0pTjiCsOE+u+KodOlbgfr8aFdAu4D7l1YnPbxOBPSn+nE5dXMJNpsdQoJ3HREeRJorls0QEmbwPYt98ON/12KZn0QIwkGavLJwifweLcmIeeYDkNV0fC31fLEXXW0DbhWYoy/CsP8GGuX35If46L5DJtKxX8PvqSlu3rhApKAkuQpT+bB5lkHh3/6xJnOir/PTJrOgr5nhS1ewneut3UWZZnwqhwgjg0Dn5eTcJMUPHJ3rI4YGQ5UzIMhp6i+cKSKQbykExZ+ZNck5dRdYgzIifPs12Lo+M2vA/Lz+wF5zab2CWtHtjF6hg2mcZjl+4c+Vft/qvb/cJB6N/Sp2v9Ttf+nav/fRrX/xxZ2j1NqmsK7vlj5ggaaL4KwegvNz/T9mmhutCcbjXxOLYMOEv/0Rlp3yd+7leZX9D2baY01/GnsNL+qr2iocZHKIg6deJyhVld3oDhq00hLPLvqGGlgnIVR7zHSjt/8ujQqHxdHVcdJ1XXB+gX5arrDvDk8uh2AxvyrTEQ5qjPiu0gIm1VH7sKD4HV3IelxTH54sxGB7wt4RRF2tbib1LE74XohuPwpZrKyvC4Lhem1Uk2p4L+j4tyIZBAyTvKHKEfGMpY5LR/TbBGunE0MYUVpFj1xwZcQNHf+U2MjnvrPPPWfecBuPvWfeeo/8yfpP1MqmVXpMuVJH5si7Wa4RRK1QNRbw2EDPs0Up/lqA5e9Le4mc5Z2U1VYWZ+eWbMQaK2nzRh6syBmAdS7iZJFM2pNuRZ+Ue/zEBBdj7QomU76Sgj5kHV1VatvV15aQz2hTMP/lPA/IDnhD5nnDKoOoT/A/lWHBfTkZTas4brYZZQU9yWR+ncYeDmCO18UVJiWh6n3/H6ZLtF+UyKGWBdbqXUfeNfH57S/vydtNR7Hx2IwoXg6Q4KCIIxGz42QS5rKoqTCa0FWrQMnaIMYW4mlcR6rDtU+rWoIGb5UKSqmEFEz4blhzkUL7Q680gcFOyDoVsCDXnEMYNTreUh9uD+g10xTfSUPV/W/GZEe05BXv2oJ1yDPII7OQRzdQ6IXEP7o6cSXc+gnR9mSdMvXOP0utfknVb6jyn/Hevz3duK/sBL/HWvw37z6HqeV+DpojhufRV/dyYRrWX07DwbZrA3NsbgXxq36WT18p6YubwbnoN3RC4fyrw3CrRISWMQgNP89HhUKNIShHSA4pgshrcfCzlAqXDE/oBq2SmfcsNRUalW+OLcnjak6u/tpf+9yrxk0P654nl2ulhrXD10qYe+uQWsCC0W9TROXSOjIIvCZQBXhm6gsccinTGVRcEPOfz7EkACB8dsMkrL9ED3FEyY7kxds/2WW7Y3Gw5f7++PRFmPD4XD8cv/l3t7+3osXo2FaxyTc41hOZyy91tWqeNORG76DLL9C0BdvmAqV/Loppfvj7a2XGX25/3Kbbe8MX75MX2T7NNtNxy/TlztNGzmafEUrOm6GckDucZMLBMjflUyEmkVKThUtwHjNqZhWdu1GOpLScCW6qVjO6Thnm2wy4Smvg7VJHSrf1OsRnZc6lSvr0HEqMtgaMSUzOY8XDDX9wo66yLVKM7UB8SMDMs3lmOYdvODXfQthy9gpGTX9zVos44P82V74mpjLecqEXtmVw2sc3pUBx0TqNub8YW+2jSSU6NCa0OEUAoTciLGppWRBzs+O/5v46V5zbbDWTs2MpNZ8nLM6/VyX2SdIPXdD6s3nXT5zWNJ0xsLAW8nwMRrd54iIaIqacmRTsVqu4vnjoDCzqGqR3zfeIai4qnil1SaQ/uYRy3OqNqdyc5SMtpKX7d5NUJ4sXRUKf5aFBRl9DWEy8uH963Dt5DUYKFrBda2S8LqM6+0VGkNJGml5mSWmZeWNVWyWWPWDqjd6imm0QerKka2t7fsajn/B4nfOkdnVBeDa0IUJeX0zJjGstr8o2cD3CjAz2nykoILWFbaJy/b1OVQHRJXFgGTl9XRAxorNB0TYL6asGBBRwdf/oqp75lVZLLuNq9XE/IY2Z4n782wlL2Plv6n3n5CfobvSYzT/X9A4ImdSGUv65OQTSyv889nZyfNQ6/abUquPzj40piGGqikzwRkHxbs7avbeztJaYsMZupIwIejeiNM03NXY3MF3ryTUwFM8Z9C3oWuAQ3U7OTHkSKpSqmam5T3LXL32GJaaddXIB670jMbh0feszI69YvMpLK1lHz1wWXvJdvJybzhMRi92RrvLro8X5Sobhdfl48CIKaBKHNZ/OztxpfUPhYeCbGxASxd4jERwEfuLi8zw+b4TLqZMlYoLQ8ZcQE0qSK4kdGKYggZhFl1oi0rl2sSkMmMbcSMS4opheLNVY8V0maaVUlY7RyUU8+vTGdxEQIU5o2gwewF6rMt1bzm6+XyeTLhibIHdKce5nG5ik84NxbC9xObWcLSzORxtGkXTay6mGwXNrd6xgcjZsBNyMU1mpsi7AmmY7u0Pt9Md9nJra2T/yFK6+3Jvm9Jsey/Llu5058vMX8Ix+ALR/YHWP4dTnZ8dnr69SE7++2TZdaz2hjosqu+a+oGLWwt8+OOnwxMvVeHv9iXJ2t2rj9ae+vBpL+ijr+6+CFzKw+en6L/Gs8c2XOVBCw2oiueSn5vd+aDIrB+O8GwzIrmob1FodQA3QVd++pJnV0RODBNEG7rQvkcfTkW40SyfECrC7tpVlRzZiX0Q7Wtfqw+uGxDcOgVjOb1luqp48vXQ2d4jiaopFNrQA7toaFKPeLQLomMt88ow35mqZnkzRlhQ0CKW9Qa7RuM9K2KmVNJqRxC3zw2/aaQHdHnP+j/XwJ4bc7Gp9WxtQNY2cvsvtM4fkLXRMLH/N9rzffRjvF1C6tXDDJ2WB4GJqQkix9OGHRsukhf9HSpq4eKjEX1NE1f60a7YfhpX6TUzhAqaLzTXRAoyk/MwZGHVsLAnZG7t4HD4oUc/VfGRIW9AOoQXXNfuqH8Hd24kVAx0pUueclnpUKy5uwUPUE8zdqn5VFDwJ7NPXN9bYWosZc6o6MP9j/hT3BKHT6CrpZshLgrXoRujKrb+SMixQerKDt19/u2UKYOOWN+rtSc+NqIt37AvVYvSyKmi5Yyn2FlL16c3HvWG5jyLU9ugkV+ljZ/PKhs3jFSirpTh2oj4V+tXfNJmPX4Ydk41qQQ4t1lP/7eT9+/fvb/88Pbi/Yfzi5Pjy/fv3l08dssqSGxaVULYOQ7fkMVwewzVvdUXNX9aKwMkL+WRveMsrZ8bqZh2ZbHqje7ZPKuV8jjU+e92x6nx9+e3bTq+51mOVUug4InVeanImh3ukEs670tP6+gFlG32NVYtZ2L5Ai9J0G+GVNqVFp9z6oGyPxPN/TwLgpX4lGOT8Ih74Y2LVeSmlAttGhIVzJCFb53dNAS6Z5M29uKeg/dQPBUFFdnlko3nVhs/0NMo08GHLe2AZEAuuuZiTja2w0C8MhPmittt1soMEi/N81qqtpsgdsTtZ6g7sa5DNqDAuSJBxVl2wzBGboV13G+PN2sr76hUN1MNkXmgGHN9Xeu0IAzGg9s6rPmn4yjRWmBNyBxSQxrdDuCiABK0PSAYCAOH5MOH0+OBtXYKKbzRQn76cHqsB7EcpFGN+sIeM7vUfBHKxWOF8VCTCS6Nu6s+kkIbVWELeepsgXzhhosxB7kuloSlIKWyzC6FK8mCGz6NhenZ6TFRrNKsURa/rmPvi55NoHMSLg96gFjTcEAo1N9uhzISn2VrsSe16WGq6Va6s7ubvZy8fLn9YnfpK+36DP3hPGP5mKPDlokT03TDxLnj3LawwM0jWvp3Y2jtQKhyNG2RuoIAtjtg1rCI6oz1FhWNOpyNrfrshFQI3q4n8+caO8VgBePYB2D/A9y25/JytP1iWWKxRy4pst0VMaw3x7s4RXdSPaOjFc16/vPh6I5pt3b3Vjfx1u7eHVPvjrZWN/XuaKtn6u8s+HDdCwgMD21IfOhUTVIXQIMRJc4yUETzgud913ptzlBSZY/nk3vnYe6dZfyzNWafHEBf0wHkEP/9+oH6F/DkDvr23UG37NyfxyvUv8An59CqnEP9+H7yEd2HridX0XflKnL79uQxevIY/eEeI0+L347jaDW+oYeg4sl7tDy2vqoT6YFgfT0308MB+4qOqIcD9xVdVcsD9004s76Sv2p5rJQs+RMEWdeL+TcJt64X/OcNvK7X+GcPwa5X+hSM/RSMvQyd/GnCssOK/h0DtLt4mC5lzT8oxe+0NkLdeiF2ObpiYrphFo2ZHd8anQ9Vsco29Hc1J10iOTFEgXeLpmztbD0UuA50XyJ90g7tMbdOyn5QRw8EFcyrJWC9NZ17xrCWRbytzmnWvW3ZGo72Noa7G1vbF8P9g+HuwfZOsr+7/etD/YjAM7Pl6kg/CMsXMDA5Pf4SZOCg/AIs04HVW4sIZ9lYuoq1B46bb82DEowUgK3lW7C0Bd8P0I2GVksozkt1oD7Msz2iAguyjBnJ+ASyq81BGDJusk/JWMm5hnqKBlgqNw4I78eBvoZ0ygioBsLk0HBZRI7xZfFelRbyh9Ft0y5lqRRZk4+Gbo9V2a3Cs731UO1wLpXVPC6xSbNUy9g4X5FOLDk4EEkAsX0F30bD5kwWbJPmPGVLY+PPYbD++1iqf2oT9d/ANn0ySsmTUXo3gfxprNF/ezP0W7Q/A3Bf37oMU//RtmOoAfQNWYZBc/wD7b4WDF/TqgtTfxM22yOipL8/g87j548z1zwE354xtjwBfAFLra7GNuXauNW70hLv4+9ury3xCmtDYC0IUNZ8/Sg/gC/cLYVevmIU1JeCKmarUlffOWUHa6WRueLGMFe5Ykw129shTKQyg+K7YXNeSRUWqLoLrGvQnjPzd6sjnnyC0LT3bPq3iqmF+27QDLuE6hS6RFqWdWQV9H/FaKurvLy0310lIe5Y+lZm48p4faMec8yMV41vmKJjnnOzAFjqGJI6QtGe8PcnP13+ePr28P0/cOUs82puR+n89W8/VodHw8O//+3Hi8PDw0P4jP/567JKCmwxSo37ItTvbDN7hAGYWPfSbiNUU4ZxXbeLevvOwoKpJpbnQZZG35uAf7cXfqMT2H4NfTLDkO75QAwwJXlmkXn+6wCQevLfZ4dvjy/Pf32O+x5H8QQYuKktICmYr/uMU7LfKiZSbCDmJgRCtaO/+fD64hTmgrH9cHlOxjWUN1RBXVWSQ04FDisqaOYMa60p1455/Mu798dIuCc/Xf7NfmqAHlFZREQhwD1jKS9oThRzuQFomD1jyZRcrY3Wrnpijtb/uXZ08FEZ+lGx7NKY8uOYi4/FgpZlwj6xB+SgAGGtqEXLuaEioypr7jcKSMctfESwbq8QSWLZVcz4zSoWcDgeK3aDHTvAavGuMDtfR1z8/F+v3ywL8DVbfMYx/pnfsA0s0XPjwvzkxI7ZlWHn715d/HL4/uRjbTl5lvz24uMR6hx/Rx/Lx9PCKiKveKhjaAkRm0Dqj3MuLAItfS1tWnUKrj5omRAJbceIA50t6gd2rXDigOf2bcTHz154OLY9CPh4zMbVtK6peX8BzAjOL0mhcTd6mMPL5m73yKUgrpUc4FJNHaf+6s7yWSG5TDNjRW/BqDDgmaKpFazUMFLyG4kBxEpWIiOUlJyldikePqiZ6T5ATDo8oLG/Zp1+5Jxf2iqxkLghFqTMqX0SW+ScHJ27EFFyEYPghka3EvSIwrNdDLDFTi1t5ASC5WEKlPFO1nEVKSO1PYeL54JcOSwmV2Elh5bhpYqZEPhtMRT33fR+Ne/Vg4rQM6nNILRiGvgo8poijIuGHZA050yYAfGPQtdrbHua+K5V2SUvE3I6wT5DZclcPsDpmefDRtbQ8/JqgGXMsK6scEgDjFHX7fL0jBjFbzjN88WACEkKCipVXF2aG5iMgvdwvKhTDaOpDkYvt5JhspWMdq8eUHxshb7awzxHnk/1jGkkAyksQpQnLKcpYR6GJ39or1lzkUqj+QfZkDX+3KihXBwXRHNTOY8rVpReyGpdWVLQlWKQHFDbSQ4wQvOpVNzMCktPzzBXiSk2kfCGJSjLMkGIBQCeLx3rAPHzK8Svb0yva3+0/SpKJuhH/Em7d2r0PIoMRl797fitHpBMFpRjRyZ7xqS61qZu0qSheTh0K69rQT+4zW4vTvpb7dpVO759eta7uKb1r1fWw8/TN+Tl4CbcBs39YqNym+Flhv98h8Cwz/iqiaGnbZRzBo4Yl/2BSSliUbfoC23w6NTaNRYAl3Hn02MIzZkyEWUJifWZYWG1wePrYdspolQdNxpec3j1HS2dCHBHbAee1XqgsoJruL6yeq6SeWi2owf+UQsYEPvp8fnm6dl5/UPo/jsgczb2Q5aYkogt6sIDlcpdkpYeECYysIZJxgxLMU1XWDXcSirNyLOT4/fPXROdkCLETPqQao+VmbVbEH65Nt3QyyBuCQfHs9SsyqRYhPYgCAScXPjLMkxJUsWoifqrhL3ylBUoA5h1g75jC+vcULXxWqrsAeaUawy+qhvuw7rzOFIA6nxuKFygyzZz/QdR7HgUBJxY0VMTh89a60fFoTGsKK0NdBopXq8ZvV7ayFz5ZfgFGNKde3DYdrfdHg/9i/wxl+k1Uey3imkDCl5ZjXOekuO355hr9vPFxdk52SQXr88hBVKmMtdLS4pVJSwe4hpPj5FNce3z8ObczFwlWGj3gpwT2WSkStZuFM8eewnnQQQzGi4d/LfaviqxdZTf0mLlds4QUINZYdaSoRm7o82Fa4Lim58ssfwl724eeyLim1ZYJ3jkfM72cufi9buj/7o8fnt+aQ/B5cXr82XXtuquJevvG51KjLQ21N0VKuK9DrvbKw3CrxaNdniroKNMdX5O7MG7vq5JJtOqzgBuzgZWlj2Z6+s1PQlpaioaWJsgja6UKMm5uIb1YIiEbw0Ht0SIgrE3NWoh5xqIgLLTdRj6GAsmkjm/5iXLOIWmPvbT5qO212pabFVBA29blKuZGZBS5jxdDFAzQY0A75O91LXWE5zsB8l+TCktWN26OvafOR/m5Zlj+ZevUMtaFk9V9Y3wfnDHSBUiEQKOQCToWiagLRQJA870UuKgyTC7YmE0HOJ/l8XdakPMLqImq5tEsRuu26rDmNlVA+2As8NVP+ouLblnTSGWATAcm0jn9Td3GEmH7jm7yb5dOdXuwgX8T/Y3QWgwHlIphNueSVDU0eQhik2pAm+qZmCe6EH0PO7/mOM9KfLTSS7ncD2mstpieiUVuTg6c6MOkN4CmAhbyvhNHQXDBTec5uT8H2+hOxEzz/Rz96Mb1A5Yw4J3L0iLQelqz+QYZL7o4OOHmgt4vEBQG3WDg2PR2UGEpqb6/9j71qZGci3B7/MrFO6IreKuSWze1EbvDQqo2+ylqpiCuj0ztydAzpRtNWnJnVLy6N2N2L+xf29/yYbOkZTKhyENGKgqKnrmYjtTOi8dnSOdB1YysC0XNcsmpOPH6xj9AbtaMKyDQlQAVxHIl/3ZeolWeTPXhbPYLOyItq8ptcUVVGWKEA97AnJSmgD9Z8DCjhjUVQEn9PdcoFDA/RMeFtq3mwYrSCukrg05BBVs2IiRg1WXeg+HX3EolK+48NSLJglRbEKF5jHeBl3DHksFYdcYVtgtKXWOPdKHeWoeu+QGXf4nKy6CDaIsg7YNxVGaO+7M/BxD4zi7MQWqULeR4HmnvXlUmqcpYXj6hrVYsEmj8amDs1cg2JAHbQnpdJrJacapZunNPM41HgYvynACqcetzzLGnz4DDl7BTAZ8lMtcpTcozfCO1/Jwbap83nbKFfS9PTzuEuqO2+CEOBf8mihp5CQi5N8LytL0it4oPG8vb9n0ysHk5P48sl+cI8nKNpowVlRxU5zkrm4TnGRHfHpuQDmPEKzzLknYlMGhPZHWZiBSBAeJZjutROBQFYncGAkt+DIrCMeWl8FxCE2h627RioPmWgo5kblyfduB7sXXHkDXahoHert78mmpVtAFAn9pPC5OmpCUGJHJGnbojf7mThXnUmf+F1FQoH3YT2Mz/hLKf5NylDJydLRXwrshmqZN5GX4Wrk2IMTNQBES6OgS6HXLelTFdZZslzsbowDfAdltl6pWx+M45UPmEZNRzPXNosrQ7XF908yFj1LojFWavAI4UmgumFhYabxPpZJ4drIafJ9kpsdkFyJAaAOQudDZzRlXsqEIzuOQDqcghyefIVK/BuHe7kywFsVNC1IjQ/eooEmdUq7J+B3gjJg8A2e7ad4jKUZc5wnuvynV8KF+gPs/SSeVovOOLG+tRZv99e21Xpd0Uqo778j6RrTR29jpb5P//aYG5CME1L75qli27PbRysEk9b3Wu4TiUQFaT3JIRhkVeUqzsMilHrMbEkPtL2Mulkpx2f1Olw97eIaWUMwEXghAqH0qMYxpwLKinJIzSYudBcFLyXR8o7j5Aw8EuyR2yzcMEvsktaGHeRAtZzA0zYY1gY1txKTvLF87lRhIpaVYTuIaDzI24lIsckV9gRluW1DL/7o3C64FLSkLU+OK+tecDViZUNXrxxoMzVePRbSBb++Le8Lbw+PLdWMnHR5fbi6V94YJjReA8MfdvWZYqjW5dfSAu9Y3p8bns14QJGGEVvsAOuh/2j31zrAtAMatmVQsREmmGb+kmpH9j/+xFBig5QUArlUqaUIGNKUihiUY3NXJjGQyNyuzYmEaPKeyVbLDXEkFIQEghezlkgDdyTlMr1onYKbvZ2hVsl9qbHhg5o0l+ywRxxBJlrHkrMnEm38HOoUwxdGYKR0M7miBc3QB4OmUJR60fOAsQ8/aD0VCQzcI8YXhrJs3lBnpDKWM7HNRLCcd46l3wi+q5aDx8tIGOiUMi/pB6S8Wc2UcGdsaEVzLlF/YFB68mFP5cMiv/YjwDDStf7eygo/gE8aBWYrIKYYaaYle+TWf+FPgwQ1RfDJNb4imFwX/0BVNqdJEX0mS0gFLFXq9QmoIIcFilQb706N95aOCO7GM8otOfcMLqFHivif7olz+05C3INzeGBnmZtX+kdMUq5UGgTIurCEwDoqwFQwVYdcxm6IRA0EM8BresZVFxYp1RMihIJRMaaZ5cE5FahCAkrAFh83/2d9t6IO3mMC0yVObNhlTURxUkbJcdQMK2L6eqo7QgKXyqlnMm9dEed2EtO1cXV1FjCodTW7sCCgYuDKo0p3Ij3hoSyvjKGNa1DNFXDGc3U1TRKB3VD5YjVQ+6JcWX7ckxAV4pcqYrrtpMUani2tOSKIzylOzZKYs47Kh8LJBwAvbHSf5Wk7PAI322u3ecs6GQwbVts2sVlAs9m/Z6dH+Uhfv2i6EvBLukLUEFrHKpevOsUEJGJF1shIskqiuIKvz+mGD3DDDJZCDb1szglacpRQLTrRTj/B9SW5yxbJosSITngAUqWE+Ii64HCRyOGtbpIIc7e8eG5W1ixjv+6FCWXlTx45NKE8fuNsbd5PAQM6crocPRkZL3jNR/dkO8Axib1Sh4MFxvSUCIx2wTJMDLpRmVmRKNIBz92cTKLx6XbhEIZILu3aeXSLdXi3bm2c4oV5xAY8NAolwLjAGJuQETlYHYpFVPiylQI9AlLaWQS/wMEYFQ+lR4QhChRQ3E/5nEMSIJPQfv2IbFT4k54AF9ADP7AeD3bnf3GMphsiralyMSBrsJeO+NQnVnYUIHkeULLdgyjoQLc5dXormOhkbj0/Y6sWpHHFRRy5QXRRUVx3lTKYLy+v1fbdA8GAmdyIJBRMsvDMjZC/4gAp6RpMJF50u6WQMrF8xOoO2WHeFzYZBEa4aVhAV4b66vVe/e7t2x67D3zBKGE4EitC/hGpqIbyiisQyTVkMRSHst6WO/r6b/5CLBBePX8qpHCm7hn2jAjc3pKlhmMkcV8BsOmYTltF0gb0uDtwctQXIlQf/LR9Cii12x1qqtXRKYJnAyQ/e1ivXjyFjUGRDYbOLczsgqKpEMmXsxboJuE3Xhxu93rBEjIXonoZWHz70RwgMjkGInW/mSMIVVKnJuAoUtBxi8pmQCbMn7iWUi8tpX1kCBAYM54TVe2V5L63WpyMExma4T+gFU4RrMpVK8QGWl/DyWbgCRk6NQE6YzniMMgsJ1BWpLadwmQUDDnucpzQDeP2QbMK160tTDZ78JLWNmOCYayaYbQfHWPGCwnVZAgPOEmSJ7IVHG8RmYMoDmhxUk3Pznt3/zHYIHw31wSCkDU5ssrbFNthgyHqUbcbrO1uryYDtDHv9rXXa31zbGgy2V9e3hpsleVzQ8X/JcnTChiEtgXYCalUiVEXDi9Djwq5M0O+QqGflhaapvEL2J1zpjA/yMGXCjmFzX7IcsoH8eQRkg5VtGTwvcYFGSlNIwIdz5WKFCH/MEoB/iN/GVAEGB8ar5LHNkCutImfWhCcXeKCbK+2jMkjglL9nVKumQdC1tdsSNKmZ+mog/lHDyPPCAMOszqFZGHg2FrT4aTgcCfFYtsutLEQyYYs0fr00US8SMGVFzwSSoK8k6iIvSmYE97LTis68N7/BMg1iqcOKOJA2D/ErmIbYDZjgUPdqsbhCHLjGRH5Qu514yFzKqRutnSxVVHIAQl2iKgCYZ5HnQWBtWVCtDEYGBDO9S90srWTJlHjzprAvoZ6eDTyAU1RAzs/WrZyqyswBaRP1wsp/hR0rYUVzMcq5GnuuFYsSlrTZL0g+LW31dp+TyoBKQrfA1kuxdBFMufshrxKK4StaqCw1hYJx0rNEllEreBpbpCZUYDSmYg1mgptvuWf/9csaWgUp3o8a9IB1A3D8Cq5lf2VBNTXA5HXB/nPvE/BipV4kOu0N9mzJTvA7dGCYO0yCSQ4cgw6HOIjM/Bg0YxXoqit0huq9cpbTeUmrnt+hdUvsaAwlfxyO/KNcodQxxMejlnyLOlcKHawlSaW8MC4YtSmoTGNnyYpvERRF9dq9To21aDVaD/0sCFstuVnFN7d4WfiU84NcXm4thpkoBvc+qMVcmLKN4V3Bi92oybMyghEEFRvBoOU45669Fw4zEyB+1SrE8NIVoSoBEcZ8FzUlQqSCwOk7QqbDe3MbN13gNCsyOJgllkLxBHspjhmYSNDkMSg2hWGx/+K3VIwphpNPUcZbzZrQkaFMTCfrYQj8YeDj472IH9t5RjENcyptzDjAW+QuEDw+wKIHzc85KngsMd/Jk/tlBkhb+r4GSL8GSL8GSD9xgDSuPVfkr1BvTxAljVO/Rkm/Rkk/DkivUdJ1GF+jpF+jpL+lKGncE15GlDTAsuAoaYvwHdHBNLWmfrEUpQ8cbowQDrJkjS8CzqwYvfiI6ZnkiB5IjxcYMd3e8nrCsOkGmX+ysOnQHnwNm34Nm34Nm34Nm34Nm34Nm34Nm34Nm5452WvY9KMI1GvY9GvY9GvY9GvY9GvYdClsGltjwrP2Ov+0+Gb2dX7HdqEyiyqlSvHhjYvDpNAHAKpl0ziWWCIOClHiXETTaynk5OY3C+Fv3jgxCH88PP1yQHZPT//L3t+hJ+MwoxMGnQd+E7Ubf7N2Db4lSIqBLRx4ge29DZ75stx45nK4f9Iln/724dcuFLBeciFalMRyMjE61YIcFUNDJAwgFGkaax5HfwGIfKOKsPT4mI/G1ir1ZSalc6/MGMW4CNFvHT6Z0lj/1lmKSlOxeAzrNvpLSIbapHDXWgx6wQUcM4CRSeMxlHn0dZ7hbFpjZAnO0wWGxbGcTFOuMIRyJGmK0BXj/tYJqoQLo+SMo4ShJAZ07J/Z5jLec/kJtiMrh37KouttnmEbW1cfGy8+nFyVLHBkOvzumeJjv2EtempG5IOfyo7FS5czxLkbvocpBJZCZUwx8jXWCTO+CTbT0oSLEVMalAUe7DGdSTVFoz/w7TUdjRA9V1ivokzCFVd2HFGuF2bMdIxgczz/QmqWZNIR799t15BcMUJr+uE3j+hvdpRuydUjb9l15EvXUq1pfBFNuM4YlK7FV9TK6W6v11tdIUudKnnwlybCLNB66pTk1UXqtSVSSJOaPn04keo0Kvc7qpBp0TWcQYz8JNDE4AURKxy+Tri2o5Tp6jeBJ1maXrs9dHW6geYjp3tLrZz2exs7DdIH38+g0OOu0WezaDulBI25ORKyIZTuRXFkT04m1Ca4nSAWYoQRUdOMuTyLOreeSVW0pmdIx7qwL46e7d+dQViVD55Ka8B5EaqOcNaHauJwrIeRt9frz1IiUa9914kZxH3RCme2TpmTVbeqlUWz6lhesexkzNL0gbx6HnXTmtQheZu314WTer73Wx452IrZ7rzBtouYp+M1hQY6YYX30snAUMa5cmehRTsKV/udcK1YOoTdiUPnWKhPn94Qeik5NOJaTthUj32t/sKxQxCuo43ejh01ZpmNb4cgezZHz+2YT8cLa8l2gl2LuUjA2bSNF3BKFLskz/zXNiUpIGlNQR6dnB3s7f9ycPblZPfs18PTX852D07O+qvbZ3vv985Oftld3dhsuyBt/byAdguiwvHBx2XXW1tpKpJlmkrBSlyTkGzom15Z2OA20K9AODDB1I5JjiX+l9l1nOaKX4ICPa+jdBaPKRfnRHER20u9sIUrwatQzIn31eNTrurnfR8PD6OodUfBWZAs+iQzpHUweS1bsET94ghkDKkMs3lxLx4UCWCOC1TbK95yMv2QZ0qXxMJlBo999Hb5BBaZ0ukS99ccHd4QzjFV42iSbCyIMXslzSRGxvjmQgdtWD7ub5CEwzmSHJL9gy+ef+VUN6hM0GLJfMD0UsWVZiK2N+W2FSdVY9v5NoyP8BfuBTfwlqRoGZ9PpyyDdFygV5UTvQ9bm3tbH1b3Njbef9jf2t8+2H6//WH9/Yf3H3p7Owd79+GJGtP+szHl5Jfd/jfPlZ2DtZ21/Z21/tr29vb2/ur29urm5t7q/k5/Y7W/vt/f7+/tHbxf3b0nd4qt5ln4s7qx2cwhT8MgufLhHCpGRU49zrrZ3N76sLm5udvbWD/40N/a7W0frH5Y7W+uHuy+X997v9fbX93cOOjvb21vbbw/2Fp//2Ftb6u/ure7s7q/+6F1ezqLI1cqb2Xr3BZrsV8kpbtu+mhQ/85iHx+EM7lPYKo1bji2jUyNG7XDjE8/24xk8kVKTfZ2u+Tz158PxTCjSmd5DDcup4xOumR/72cfRbC/97OLNWxPpt/p2qK2aXsNDpVUitQ1nNeW2TA28xhD8G7IlGVGpIwonZwcrRR2NCFjKhI1phf1KJBknW0M+tvJ5mBjI97qr26tbu+sra72453NAV1dn1dqhNRndKhbCU5SMLcsNFSzlVMOIZXeFr4aM+GyS0ubviJCQngxy4I023AF8qRuDaz2VvvLPfPfaa/3Dv6Ler3ef8xrERh8B1Dp4gkRtqZPa2T7O1u9x0AWM3rbhkXdry21kiSmkPlsxPjTodWdmqVpqTEWJqe6FuLGx6z3ALTU44pQ7GZrb7at00S0jMivmLns1bN5uNSlEfW1H3fEDOWn3ObQhlHyNou2Rn+IbMUaBVEs56U56sqn0MM1zVtoXI/+nZp3coO/gcrdLzXJfCSNq/Ip3taeoW+88IAPO02zLVByyvGbMUtT2eSAzPDIVzc2z/6299F45Gvb68Y/KR482Nu/7VHPl869/Jnrjd5ORFNIYNH8ksHSXhQ9jzhaX07qgnltOPnbk91PSxFe/Zt5zJrMbgy9m8wB7P7N9Q3e+QdiC/evg1zbaBBMPoL4riK/y1hl+59OSIgxIW/NUG4hqaUuDF2KFWX1+/g3fwmW971YgBZQhOAuUr86HtgwGVAEb/c+QTdGA4SR5JCSnsY1pJ2FZYxr8gsfjcmuUnlGjc9uu03tzesslGkBKbQLpwMm6r7dW4JUR1VF82vr1rgNOCSh1r1nNPFdavzt/n24t/fz15Mu+ezt5EMRg8KGraqIue+GtnQDp/26eQyOQ2ptkdy7KJa7aZzOOVqqHd4ZoTDa4h+cXT0AobBExIKRCqdS5O3nByzoQxE/Es40PcsFX1Sz6CbUaUrMjIYCX+9Bgor0P4AMUCnsTGZnECC2uAsrv6diZbKMuPn8jnraJScQbnZck/M9mvKhzASn98H0MTw98HmoDqrztnDtZng5q73V3nJva7m/SXpr7/ob79Z2/iu4OvdF7sFu3Z3YVf24mZj1d5Z724BZ/916793qxv0xw5ymswt2c0bTkVkH48nCnDk7flMfdp+AdcHqC/HLyb02kgC3OM8uF7XoTvH+7TK8DGaEpal5ILY/FdgRT+f6FZX/yVd5q9FCcKWnG6utwxxmEIRdT6Uo8tPvU6XpwA7h2ZmwjF/WmOnvflogt7mxsbbliC8Sdl0Nf7gfsor/2Yb5sxCFBGD+p4/nDHippjSGm6YBb4jMXe2tb98HdMUyTtOz1nW0HpA+glO5ClmwXRUebeMuWT3sLpxOVyilODlJp2MqcqgF1C3XHisOu6+4HktwzlJjrBgPy598+6HjMc1oDIUPqkTe2Pjw/v3O3tb+wfsPvZ3t3s5+f3Vvb/deGkPxkaA6N9RbsDI8LGeAhaT2QISa4lfooy8nE2boo8J8UtzahzKHcAjyN0mOqBiRvexmqiVJ+SCj2U1EThjz4SAjrsf5wBg1KyOZUjFaGcmVQSoHKyPZj/rrKyqLV2IYYMUQBv5fNJI/Ha2tbS0frW2s1diAtyrL91TV9hDgeVxe5X1eB0YVOTWmGUuiUSoHNPU2YdET8Z64PodL+zgercPhKV3aqkpyB0dYdGmGT3ty+nNh13bJ0c8nVJAPxlvlKpaBz9s1nk4EHu5CuP1i3NkSAR6C0XP7s7MWa4mhj4XgC3BeK/jeC6UfwBG1N/eLtZ6Ccs9mUmvO1ERxrTUCC/RPZgQSFh6LT0GHivp4vdHFC0c6hRKxTfUCFIunqxubWWtPhClNByko9haYDqRMGRVNCL3Hn8gwpSW0bMGb06MTIthIao73TFcUymfETKlhnhoD05tOUASZm6dsXKogTIDdYz7nQrC09XIT7FqfuRDVJ2Wlj4sdMPgK4GZJRI5tJSEMOyFBMRUocLv7adcW6jH2gbMNr66uIk4FhTBhqow1OmFCqxWdqmXAxEi+wWEZx535Q3Q91pP0J5pOxbKDcZknaqkSqoSVvwLnIJVXkMWp6lJnoFzpR62FLmMqnyxU4LiqBDODwNl5IXXZY2vE6xoNnKqUthYz2zf6RUbeWtjmjbyto/RckbezIFkQiRcZeRvy4l48eJmRtxbO7yby1rHpW468DXnyfUTePidXHjvytsKd7yTytiWHilG/wchbi+OjRN6ezBVjW4utLfYChKnmsj1JjK2d/He6trAgr+YgW5z40YJs13bW19f7dLC5sbWxzlZXe1uDPusP1je2Bmub6/1kTno81tWr0nQyrcWc2gDLlxBkG+D7KLex8yD85EG2FtnHCfg8aR3aWVGwDQu9FhS0sIX+Go/4fPGIIQt+9HjERlp8Y/GIDTi8xiPOQ60Xc4Fzr3jEBoSe+/5m4fGId+D8Aq50niQesYEM3+k1UIjpdxePWEXu+4lHDDH73uIRZ+D248YjziDI9xmPOAPZbyEeMQT9NR7xCeMRS4R/jUd8unjEEuG/83jEZly/rXjEJhxe4xHbUurFuLP3ikdswui5/dlHjUe8C8EX4LzOG4/YhNIP4Ih+k/GI5evyRy/mjyZYqSuYu/ad0kzZuCn4XmZ8xI3wYZRYw0VLtNr6UNvxYsFhep8M9VP+J0swlA2ukn2UHmwiIZp3oegKbs5E0IvdlApXHbgJpzpGM/BpbMVT7zRj5nO9NuBzLLHSvVETOqMx8213dvHhjNmLJrhnl1PjbkPInGvYARGZFOLoij59lGTsjxy6JUhCBVzv23FtswpYuRRaOQ8Msf/IWXZjW/EU0j8c7tDtne3+YCuOkw36Ly1Iilg8IU2rZIPPWIc0aGtoe7Vg97qCZDZgbMCM60i0HDFDqnKXPTuy7ZjkCDumIknR1fKTQL/aZRvYyBJHa1Wl6/pguLM6XNvY2hqsrSd0k67FbGd1J+mxHlvfWtssk9PB+sREddO2ltfwHdvK0PWE9Q00oSXIhFGVZ9ZzBCH2QmkF2JM8FGO3SVSI2esNe5tblPYGdKe3OtgKiJdnqLBs4d2vX47g4+zCu1+/HLmSurYzCbHVctDJk2ZKux9iT1HzisJrRfukA97gP8gYtDIkibwSRjwkUfGYTVjX9x2dUj2270viwlrb1NJ9nM69+9jdzTWLytKg2We57lLYN/JQECWhA6piRtsYuk3oDZZ+tnHhh8cGqxVDKkM/bE6X3nT9eQGtNqwU0ODy0JaTMmNjh8ugqfgVHD+MpGuyfG5rRiGF6k0eG0pH+eh6F4C9oD0N2oNiB1TfABajP406cpM37NtW5j1ZgCkQfJq4uLCU0QTFSpe6edZG54rAfblimnCzbG0McNcwWEht9GJ2A4W6x7BvlN+vDO6mxSatZJIrDYMMfPPepKFBKZ4mwcMDRjpTMQrqLpnXO5H5rtz434bPXmF1MYsXGAKlbrUeUkXeOj9P0ywa/bnUBcz9mL6JqBRhJJvtH5WQt53Rn50uwoMjdJbq8jS1xzZBF6fRpN0p7L1k6Lho8GvXJ4E7GhT+n86D1arltFPh1/lP53jpUu4n64CudN4b5uk9WoM+W4eQwyF2XjAKGHqC8YlRNLYv2I3Moeh3oUZuAq4rLcOIJC7IeZ6l0LT0HBJ5IB4S1BCuYK7g9E5gxA5L0CMCw8wFb4OF4YcM2643lJcv66V36+trK4rRLB7/9Y+f7ff4+SctpyUuOTXxDXHqzVcxkQm22/ZaDkRZEcWYKFHQU65BG3BBBNNoQ0jBtTTWPyoZOQDrIPFb0YDZduPmG+BpxqgKWU4hw4mkcqRwDPMqlL7XTJDfc+hlX4R5gXo0u3W1f7KXEN+Uzr/mh6XK6N4rqjyg3ZI1IaSuK5t7CYsZbcbPJTmaUqUCffToyTB2+KKRAGxqUQUG3aYd6m0GzDHV48ocgU60hOhUppXZnNdmeDrwzvqbjXDIQr/W4Fhfrx+3r6+vlYACB2yRpghMYIUVfx0wZZvdm19sUlkTDl7eDU0rQlXbc/4Kew7aK+G5RDhLZLQ3mo3eNhLSvAsrMSt0DMYMBLBHtnl9hhdUMN8g1/6pbjAZIosWjx8Rm5kLwiZTXcADoOOT5/Zt26LQX45yCKgXmlPNyIDpK8bK+YH6SqJFXNlYi97+7RvS32q0nwauVTE4qFTfsV9nfDplfv35pvyzWkAj0/1YroO/zEhnKGWp3T90kg+/+HY7yhuWQVd5NautfLtm8tUoI3/ABN7eopb1CYw+W/3BBlI1rPE6/Pxdo2mI8M7YisqYOYFapM7yk4DOtoYwbus35I+cpmhUBC3KnSNSrPeiDa49umbXMZvi1jyWyrZNzkVireraao3A36XO4w98iioEcKjGXc9V5n7H1qfFIYh2TcNg5npX7GLFdAMKeEVZQ2jAUsyuqC/g5tVe1gghbdHnp0pHkxs7Aoo8rnmqdCcqTgFs23kcpeSXAa7KXnp4neTkUuWD1Ujlg35JrXRLy7MAD7W4Nd5d4HcxRgdPFMwGoDPK08JBbVimVLW+A9RyegZotFfa95ZzNhxiG1szqxUUi/1bdnq0v9TFBN4LIa+EaxxdOT1Bpdh1R2+g3sKlHfbxr6v+6rx+2LDFViwnIAffts4HfT9L3RecaKf44fuS3OSKZQsMf/hqh28wrEMISuee7vPsg0+QQjjftsefzkIsN/EfyBwVJzyKPhn0KWOX1Du/9mjONnK3X9qWZkY+xvSSwSkMg7gGmQXHOUJnnClrHsIkoFYktBWnAl7jidMU7oyWCkIhM9x6ibgDBIpyYhnXqkfZmIoRU9FiV33Y7hiPRmV2U5AWTNsJg5guOZxls1FBjvZ3jw0Jd1Fo9/1Q4XJvX1Pb4g4ZMg+0Uo3UlVNt2hfisWCYTfKeMSmL7CNpMHujii28a/Z83/Sg5untpgOWaXLAhdKMi3mJANL6bNIIsz+3OCIJFtbFtX4L5gv8APa2ryJ2pV+ZplQblTi3NCMWC9waQi7iZPOCGGSAP7qMffX9P20tAGgkkmGHydI2M4SradSDglAhxc2E/xmc1yL5/cevig3z1CzCc/NSxJNzI4P4wSB47s3GWIoh8pmm5a1NJA2WuPH95xfXqqDGRdrBYwqpuxNQRdZpaxDrUlgD8gkV6slYZtYPkxlJ5Si4kVQNObUUNOq8OGcyXVgurC9MgzECZiZC0VTSvFiV1iaqoPPmn50LPqCCntFkwkWnSzoZA6dMjM7MgHOUe/nurBZ/XesM8x/SMCuwf2bTrADkhzbOCjL8wOZZlQjfqoFWxeNFmmgFkK9G2kOMtIKOL9hMK4D8kQy1AusfwlRb5E4exvS8jE26fbjII+zgDs7vdXMu4/ci990yiE+/pbr5X3fLmbulI9FzbYS+EPRz73HtddMDNkAfDfIj7G2aZiOmf0hX3aL+zH66heLl7P/P4KRbGnyvRsC8FHiRZsK8SLxI39xC+GpqPMQxt0R8wV65hfDZzZUndMktyt+xzRIGzZzRkcvhCEJnSPFtiwAaHMOF0QhIbIaCpROGsdCUDDJ5FaSS+rV4OmY3NvtAjeUVMfuGIFds4PIjIVfBDMXFqAistpnRuQfVBTW3j3lJmBn+qZSrna3KS348loLd4RksBKCCdPWqOHRIM14C6sVk4FRUXCAHZyU5qOL0Uf7J05SubEQ98hap/t/I3vFXywHy+YT0V8/6GKT3kcbmi39bIrvTacp+ZYO/c72y2duI+lF/w4P39u+/nH486uI7f2PxhVxyNRZW+qtRj3yUA56ylf7GQX9925J1ZbO3bjvTeOKqaEgnPF1UKsTnE4Ljk7cuti9jyZjqLknYgFPRJcOMsYFKuuSKi0ReqaUaAfHJGtzfVv7cZ6wlIEbWMHOGuAgTTX1vgQxqD6H5WZMnFJGP8nd6yapUuWCZYIuqG1HDAWfzYGMpBHo1ayWsR+tRb7nfX12GSoY8rkL/IlynB/PUZVwHHJ3FxH+rUsCZ60/FQTefXZ8xE1qqLskHudD5bWuSZle8tiYXW5alBnxbuev3on5V8y0W1KDezR07ntHWgV10mVpNZy2ifxztfmpjC5nnnBVEsyKNytrgN2S7txr1/yCajt6qJczrmNL4gmlfcENhWDZVhIsRpP9D9Xb8E8anSsmY26pSZgjh8ivB+QHvyGCtXZ0s6ktX2slQs7lOZN4U+4RpppHBvgmLjMUyS8xwXIxSi62mI8gAgXzUHLK0of2ZY94Ys5ENoH8sc7H8B2EiplOVI5Sqa323JshIKXVU30x5HKSi2EBoqEZCfY6sYkLJjLxl0Sgi/8HYRZf8yjOmxjS7WIIEUH7J0hviLWbw1DM6hMqeFUpwIVg2k6s4BMGHLHIFgxV560K87aj2tzL+SzOQvB09xM+OOy+Wt6CHCSd2XCii4JIBjVudJNxKloOnJCtG0LFLBnPk0HQ0Al1gh/w8cO1qAuF20huFUm67ETbIn3vcDullO/TNoYSCXxW2Do7z6BOu4ozBCUJ1hdkxAYJgvFl8GfKMXdE0VV2SgfCrLjqkNCEDmlIRs0zN4ZIs7LQKEDrcR8vPiERRL9VTv66v2zrMC/RYPk9tVTnAADz+eXCQuVY8uaMSr9f6eSpYRgfcVzx06r/2w+x9wGwDpYFaJJfQhqlJLdPEtR4tzgRaZXZQzUZysVnW0KpEDp1BYPR5Fo+5ZtjnBRDRNbpQiHxQRWrd6Zgp5uoYOJNo2a/vt8Pw2Hgf3BEz18nXk4Ml8wcW5k7hQT9o8YKr+iUz8sGu26VSUljR3fSPnKY3apTTLInwb6g6+8cVG4xZOl0ZyjMou5GuXAh5lbJkxMzQKyUEzyzpOVPRWE/++a8wkAesTIzi2f9caiy14ErJuLSfelbWm392HF5zXFrFqdksXL7mgqQEio2XJvIF/UpUULHMCsuyxJzC6Q4rREDxeehBG18qtVIvyviPk9aVYgOIH48Mizz9OIVjJf9FM0lh8dk9S/ktnKawG4azNb09Y3nElyyacJ0x7P5rdNjKkP4BYp7+FF+yM8hyOwuAU2dxxqhmyT/3oISxnzbUrZzhXnxwPZXKaI69fxyEGP5njb+Hgkxo/PmEYJ8Dshr1V6PNblgroUwOW3Xly/HeHA1fGVQDX/QCcVo0OLAPGm9zdQtr6oujiUUNq+OgLQkWZpkYzB3GVjW8Pdxfchm9tsR7KRO+abMkmFgZkcMwF5Lk5TsQO4Ed1F3Y1ela3T3aiv7VmOozrs7MEuDJkpX1qoz70Wuyfrj/nw08WsbeGb1eb46G1lC2Y2GVcndJxrBm0WwFU7KfrbbBon8TrvkI3R9PC8cML/1JhS9VwjRzJB7x5QEX5ls4totH/K/mj589HTf7/TnIaATvbKHCb71ImREVU9Esqo3dVPq9/nY0j1CY8QXLoksmErmoGsOntkLDrA0eQCAIQg2tUyboIG3fOCOWGYsGRcuF25AZppLqRhP2xAyDadoZFSN7ZdWLesbi7veini22YP503fPHjEyk0kSxS5aFhbveGxNT2RGl8T6NxaYUU2oCd2Sgtaep5NoRZcJ0xmNF3lKtaXxBLiH6oagMgTWzrrm+6ZJpxi95ykbM1t+0V96aZViEdKlL+GRKY12MGl5gmzH8uOa1UQbDmqFsKArAZJsGQunTGUZAg/nlTHUQ3eVExrlBealmqW5EG/OxmIlLnklhRmt1BfVEvD4IwbqL6VTcEF8RDqTEcqhL7sMhuEjlGTPjqxfAIs0mU5m9JO6cWojuYgzc8UyozpHQhqQJD6rXdEv7teNV/HjroiWFF3tWDo78J1fDv3TiUbjObz/9Y3+p2Oyh1I+G5qeeRsAGkE8qLrgYwRF150heQSN/lvB80kFp7vzCR+MOsMC4aeRy1TDVq08/IkiCqh5AQnBVMZeGqYqx1qKeLRlzA2eICRtyUa5+aUYoHi7xKJAieIIrIq8ES9B6oYKO8Ozpw+GXk9PoczbCtg3kLXxhlCf5erKMfaCFFMvTTA554GoFDRO65GosjTLgyhWv1ZKMWToFvQ8n6orFIJzGsgU9YayvqRTBZZlmdKIIjTOp0HC+klmazBBRcZlEgisdjeQlnFksW1UE4lpXBng50k5ULUsWaF14rjdaGFBsxVAPFIXbBCl0GYJWvamn2TTjMuPaMoJkbEQzuAQOVMD9KFgz4s00sZ/6jnPI643eTnj8CL0a9irNg2+9ieLKWAEpbg54B4OeiFlY7kDSLJbrSodnVeruFp5Ucqwjn96QVI5Gto45OT06IUaZ4k1OwkccdkLXC6po8OQpwuJcGxuPDLigGTd2zMnKx8OPB+XZhA0BHsgEnoENlKY3CmqVQmVkB6WEE/0Lv2Z/deWTw7Y7GDOosKa6ebsLhXL12JODanJufoB+HOcRDGNHHFM1ZsrJ2/7Bl2UmzK5Rbths1IwP58UCU+fmzXNoOADVqEvXKwNGpnKaG7gSf++H91YIiHk5UmO6urF5vuTRO7i0TKW6iFEMWzLWjpfd3VFxsaa6ZVAcKbArCNIjLA5nD6ANt+1RFjnXqYqCDibntvC5HRF+jlPOhLYEbX8L8trL+1l6ef/o/bu/1Z7dr326W1LoxTQzu1dv7h+lH/cP3IP7++67/d312v6++mt/bz21X/tol4nwffbO/vb6Zb/2yH6yHtmvfbGfsC/2994L+1vtf/3a87oFdV6Ma3i/PtffZW/r76Sf9ffdw/qb6Vu9bGZ+RwYMrp6piMcyw4/LsYtItPct7/GZEgj/Hcbec+1I7N5jXvf3B+7oH24q09R2doNjYwNq40k3JCONpdKBQkY60ZT7zm1Tqsfu4eDBBgDNv302zVgMtwrLcLJfvAjXKPCJl/OSqHCJUSX4DH6R5hP2p0tSng0exqVXHp7wEcZNviM6y1l5dKRIaVgJi8V+hR/OmuRmBuqePxAWA1f1ozwDpuBkTfi1IL3hUPjcrWjBoPfl6a0jG+Ias56piAulg0PRO2kExwz4LnHvEp64ZRGnMk+KFbBnPrp7/oxMmKYJ1bR5UXy0v2KwRlx6FQICC7+DJskZPHDmhjRPxkwpDAYL10gJc3gp4hM6CkpYFuUdJnyZDuKkv7rWqD8KATk0I5DDfR9uiOA6iljx+InsGk7BQzJNQkF1ABn4I4TK4XoHqxsfvpXdwRwOwCIU8fZpPEL++blnaiG9lbnainEw24TGYy4YrPFWk9kXouCFtnOF0VNnLRTa7W+1nXWaSdBiLRlnH5+fbxkbFVbf7XOUHm0c36mFRMYXIKtWL+y7zw3LC38Du8Psj2mK7eBBKeBvZoWrscz0GWrmwp5w2zHOt+x1woxt04NFGm6Uy6+UlAjuDlDux//YRKyAYM2vNBJtxlRG48w/G2i6YEHNOWvlzXaT3n86202Q/EROP+9/fkd+kVfGvJjQqVGyiv21Bktpoye3b/Zktj4nXqcjCJGTXLP/FnL7C35qGORQDGUorXZbgB55TtcEAmq+bxRPu28c7J2EmcKukZuKWKyim0ka2ecw1Y1meHYqpFgu3qyU8pS+e9tsSZ/NmlIRLDfEQMqUUdGSvMOCIpBQU7C9Pq9U0SDnaX3KOkf97t3pb+/3ezudduB8PiEwQxjn0gxILBPWuA5ug0XpjOl43B4YNwtW8xM3XgIv8gHLBNNwtW/l8O/hdw3jFr97m6tsQBWDklAKb9eqxUt3atYS0LfLXJXiU5k0q525FnNAganEY6U6c81UeYMOv+9MxzIhXw/36xOByzyl8eMhVYxYn0wmNZX/wMlc9ZoZk1WclIdP6AZsytE2M/6///N/lS1XUwfJavC/PHivCH4+m9DplIuRfbbzl5YLO8DJ7m0TOq2DDNX/8AzsxcEdwNYMfMamKY+pKlf3e7gQFOPOkL2ETVN5M6l4vg+fuBh3xsRwJjbM00dHORh4xtR3mGb3ndgPe+e0zXbow+fFce2eZ7eXYsM79l80jGt/LLY672c3bU3F2GSufYldt7WE7QxREaR8izVsMf5dpvKC02Waa5lwBTkmBfr/A38l+/aXGxI+R4LDgDvPVRqGCg0DC4cfctaJo30uwoOnckrJHAdt7kTW3i7LoQcgqK/UPCe/7Tx4xnQHNB7bMo9jWsrrtXEztgUv43pc0DUhSY7lBDTNdD51V1M4EDZ6n2BKsT8qhLDpKc3ohGmDWGbTjIBvTIOXgJ1a4QvzsWvzVgE0SE6gKTQhVhhUcHiMT1jxIjzpQkQ55B2VQIIsBa2AMs0ktAHX00wmeaznJyREq/i1a4cxlqvH7bZp7y0upWnfKF8y7G0w89IdUwc5q3POjO/6i0mPfiALimS5EIbRXDTDkWfp/Wb/+uWIjKFVufGeYDorrQDJbUSP86xye1L23GbM+uuYwTIo8Luiyou49XJprsdMaF+OIyNCau+8VK9EOjaTfcxopuHWYyIF1zLrVHTXDLVjn56pvGee58Os9u3yGf5sjR+cDc7i1y1zOr65SXExNroGjzZJiTvVY5iGCiIVfMMyHiE4DT9AEs2fLHuHDcMbTIaH+lUltKDY/e9yYGtPuRA5L0bRMyKa5KWSHqRRMGvInkpNU4cgJKAypZvGug2RXDWiEYSmNc697zYoLsiEx5lULJYiUQ2WbjxmrU8A8yyNai9U7Z0ZIJV5v4spKWZEC0I5f+5cx9PzLiQHmf8Za20+mm0P/lbnDQstOABrg0ilk/89EfnFObJy6OtQoyFgOW+sgD1U45C5KUZwAOSe5WUG+5eM8B8eN2DJpzUc+UwZrBzQHd8K5WEIVRkS5653S+NB4hqfntvCU7G7U8VUMCXTS5YQPnX5R8VVWp5lYKHJoLx32fkqyb1NYE9qfLnPGTDWHZSZYYLT3DGEJEK4tAstdpTQEmppFc036p7TmMUXZ1VVcA/QdomWF0w4kxUSEBU3yo4KJnOV3hAuLuUFS1zniCFOrrAIaFFC8wqKGrmikuTwGA+Z4WG3q7vanPufTmxFnDpqcI08pXXFZ8h0BunWLVU9nzCbqA/WzRSTZ+25D1jdYDtj9Te8J8S/AWYwS+ApY0QzkQQPw9fOZBPsWoM+SfKUJfhy9C/OVlH5ZEIhIs8ZKx+tANhfWtooxTjkbhulc5wxZd0IA2JKlbYRH2zCIfzVOh/UwgtOQyGbyGHPTCaSqeRCqy5wXQVc53pMzicyAbWXnkedO8yfBoGFOhIsa7+BF36dBwwzTlUex4wlwaVCcSl3VZeox5t4SHnKEs90q4gCphuVTVIpL/JpS4YXY7RgeAFqMFHpxmY2R17sFvbY+1CxJeSiuEwb8UsmZm0Lma6T5lYDzBtBbv/A0rDASkIhoxYOTNzmFj2XTeZuIrWehmJ6eno8p/NkR2imzywhNdNg0nvSUkoLD5e0ENKg8D+5r4ieWLE05qJzDSxporqgVEtezJKW25g8kMlNI5urg8waqMSXovVRfcC6jdCCIO7fL1SN3eYHLpRDHhDwlqfPngK7wT2jcMvA2L6YprZ8QdRIkIxh565m4W9G4g4EXASqH5oMZZrKK4SVZpAyBHGTvgyl0BE5Mjsoh/qxdkvleOOs7SGKUSdw2leb0RDFDWTeUGN5JZrxHTOasKx8W0Nm39gQKCxoTMSk2p6gFS3g4IsKKZAROLnjbGGL29WK/GsQ/Xl1ZGUnMKOn9AY6DRnFrDM+RSuwrXJ0RnTrtVMC53/V6OK15oDpK8aEzXIc3GjYryw9oFOQ3bSuMmNVQdet2mjF6oBH7UEr6hMLucyiYFIozCMFoWnGaE0jkCCWt147I9jD3L9PUpt9clhMhqmompjhDUggoTLDkuqUTDM25NddsJobFQBxhlAiGY5k1ADUc7d2J7SKgrMIaBglykZZhU0SAIF3QIHMqehqWyO5bXsk8x9bkAZRO5tLV7eVNxkyqWxBUCzvVPIXGzYd/IdkfJUEskBJMEuenVk1cC9JuFUOlPU4bXmkaco0K2meBo1R1xSoQe7QGC+YyE7Cz3Bzehwy48GAW11Ox4cE9/59+KUhfoNyx23ArM1glwAbv7RvWu1v+FFwrr5wK7r/2+Wcs5zu6biUeQSKQWecXbLEX5PZ8w0AhVhYomZgQAE9urYOwXPXp05QiM6oUFj1NCInRp7Q8q0Nh4dPHBp4nu4dlxrMaM0mUx2RA5FYuxlKVBT6uzZawu0JVGmDeMl7wUuRYusQ6zj0hw1DwDZt6Qzj22QeX9hM4da2NYPncoynMpvn+Kby+IM8YygN7WpAP7Zf4El/b7fArqT7rfu6t9S47pnSdJByNSa0unrnsOOLw6mXshoW4GfdQtHC7jWflGbTgnrsGlO5K+R9KYRyx/wyvlAbgeY4+bz395MNsy9ctz7id2M0E3UGMcOJKqrj3R2q46Er9OjkZa3QmtEQrs5gZV5y6shmHrJH+bcYY36hBoNoWSL9S5FHv4+lKtzHjk4IE1BlAypHz7OlpbOjGmdtaYVgzLWVBVUZzoTUZ6ATykWsSFPJKgTF5RW/I1vRtq8JXKdckYDMBRnSSwy+qlYMjYr6WecROaBZyo2dr+sFsbxIvFGlYrVw/Vkqh3UXpmH9sbtwmkGEeyIKM59H5IjqR8Ty2fXLmIpEjenFo+1YNQ0z5MKoFwOqn6yFF1cb+OVtbNV5Sm0NZxOxIoIaLkZrlZzDpO3bEb21lEMVmFnXGjMLOcyA+/aSDsW/WnGHcLyGMg9OOfN4EnoZh3sfj1tqY/tmM/1npZUfY+xDOyVsTzRUjdNz3ZZ/soW9hsQgRw7isfxiB4ZDlcfwF/zI5EtwCvOFTY3TWdYYLfXFY9+y/v8AAAD//+5noqY=" + return "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" } diff --git a/x-pack/heartbeat/magefile.go b/x-pack/heartbeat/magefile.go index c73dedb0df17..356d5e557503 100644 --- a/x-pack/heartbeat/magefile.go +++ b/x-pack/heartbeat/magefile.go @@ -68,13 +68,17 @@ func TestPackages() error { // Update updates the generated files (aka make update). func Update() { - mg.SerialDeps(Fields, Config) + mg.SerialDeps(Fields, FieldDocs, Config) } func Fields() error { return heartbeat.Fields() } +func FieldDocs() error { + return devtools.Docs.FieldDocs("fields.yml") +} + // Config generates both the short/reference/docker configs. func Config() error { return devtools.Config(devtools.AllConfigTypes, heartbeat.ConfigFileParams(), ".") diff --git a/x-pack/heartbeat/main.go b/x-pack/heartbeat/main.go index 05d40db6a33f..4c0f220edf69 100644 --- a/x-pack/heartbeat/main.go +++ b/x-pack/heartbeat/main.go @@ -7,9 +7,9 @@ package main import ( "os" - "github.com/elastic/beats/v7/x-pack/heartbeat/cmd" - _ "github.com/elastic/beats/v7/heartbeat/include" + "github.com/elastic/beats/v7/x-pack/heartbeat/cmd" + _ "github.com/elastic/beats/v7/x-pack/heartbeat/monitors/browser" ) func main() { diff --git a/x-pack/heartbeat/monitors/browser/browser.go b/x-pack/heartbeat/monitors/browser/browser.go new file mode 100644 index 000000000000..f3cb1e6483e4 --- /dev/null +++ b/x-pack/heartbeat/monitors/browser/browser.go @@ -0,0 +1,65 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package browser + +import ( + "context" + "fmt" + "os" + "os/user" + "sync" + + "github.com/elastic/beats/v7/heartbeat/monitors" + "github.com/elastic/beats/v7/heartbeat/monitors/jobs" + "github.com/elastic/beats/v7/libbeat/common" + "github.com/elastic/beats/v7/libbeat/logp" + "github.com/elastic/beats/v7/x-pack/heartbeat/monitors/browser/synthexec" +) + +func init() { + monitors.RegisterActive("browser", create) + monitors.RegisterActive("synthetic/browser", create) +} + +var showExperimentalOnce = sync.Once{} + +var NotSyntheticsCapableError = fmt.Errorf("synthetic monitors cannot be created outside the official elastic docker image") + +func create(name string, cfg *common.Config) (js []jobs.Job, endpoints int, err error) { + // We don't want users running synthetics in environments that don't have the required GUI libraries etc, so we check + // this flag. When we're ready to support the many possible configurations of systems outside the docker environment + // we can remove this check. + if os.Getenv("ELASTIC_SYNTHETICS_CAPABLE") != "true" { + return nil, 0, NotSyntheticsCapableError + } + + showExperimentalOnce.Do(func() { + logp.Info("Synthetic monitor detected! Please note synthetic monitors are an experimental unsupported feature!") + }) + + curUser, err := user.Current() + if err != nil { + return nil, 0, fmt.Errorf("could not determine current user for script monitor %w: ", err) + } + if curUser.Uid == "0" { + return nil, 0, fmt.Errorf("script monitors cannot be run as root! Current UID is %s", curUser.Uid) + } + + config := defaultConfig + if err := cfg.Unpack(&config); err != nil { + return nil, 0, err + } + + var j jobs.Job + if config.Path != "" { + j, err = synthexec.SuiteJob(context.TODO(), config.Path, config.JourneyName, config.Params) + if err != nil { + return nil, 0, err + } + } else { + j = synthexec.InlineJourneyJob(context.TODO(), config.Script, config.Params) + } + return []jobs.Job{j}, 1, nil +} diff --git a/x-pack/heartbeat/monitors/browser/config.go b/x-pack/heartbeat/monitors/browser/config.go new file mode 100644 index 000000000000..9c998d7d0363 --- /dev/null +++ b/x-pack/heartbeat/monitors/browser/config.go @@ -0,0 +1,27 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package browser + +import ( + "fmt" + + "github.com/elastic/beats/v7/libbeat/common" +) + +type Config struct { + Path string `config:"path"` + Script string `config:"script"` + Params common.MapStr `config:"script_params"` + JourneyName string `config:"journey_name"` +} + +func (c *Config) Validate() error { + if c.Script != "" && c.Path != "" { + return fmt.Errorf("both path and script specified! Only one of these options may be present!") + } + return nil +} + +var defaultConfig = Config{} diff --git a/x-pack/heartbeat/monitors/browser/synthexec/enrich.go b/x-pack/heartbeat/monitors/browser/synthexec/enrich.go new file mode 100644 index 000000000000..426b5da2bd73 --- /dev/null +++ b/x-pack/heartbeat/monitors/browser/synthexec/enrich.go @@ -0,0 +1,104 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package synthexec + +import ( + "fmt" + "time" + + "github.com/elastic/beats/v7/heartbeat/eventext" + "github.com/elastic/beats/v7/libbeat/beat" + "github.com/elastic/beats/v7/libbeat/common" +) + +// journeyEnricher holds state across received SynthEvents retaining fields +// where relevant to properly enrich *beat.Event instances. +type journeyEnricher struct { + journeyComplete bool + errorCount int + lastError error + stepCount int + // The first URL we visit is the URL for this journey, which is set on the summary event. + // We store the URL fields here for use on the summary event. + urlFields common.MapStr + start time.Time + end time.Time +} + +func newJourneyEnricher() *journeyEnricher { + return &journeyEnricher{} +} + +func (je *journeyEnricher) enrich(event *beat.Event, se *SynthEvent) error { + if se != nil && !se.Timestamp().IsZero() { + event.Timestamp = se.Timestamp() + // Record start and end so we can calculate journey duration accurately later + switch se.Type { + case "journey/start": + je.start = event.Timestamp + case "journey/end": + je.end = event.Timestamp + } + } else { + event.Timestamp = time.Now() + } + + // No more synthEvents? In this case this is the summary event + if se == nil { + return je.createSummary(event) + } + + return je.enrichSynthEvent(event, se) +} + +func (je *journeyEnricher) enrichSynthEvent(event *beat.Event, se *SynthEvent) error { + switch se.Type { + case "journey/end": + je.journeyComplete = true + case "step/end": + je.stepCount++ + } + + eventext.MergeEventFields(event, se.ToMap()) + + if je.urlFields == nil { + if urlFields, err := event.GetValue("url"); err == nil { + if ufMap, ok := urlFields.(common.MapStr); ok { + je.urlFields = ufMap + } + } + } + + var jobErr error + if se.Error != nil { + jobErr = stepError(se.Error) + je.errorCount++ + je.lastError = jobErr + } + + return jobErr +} + +func (je *journeyEnricher) createSummary(event *beat.Event) error { + if je.journeyComplete { + eventext.MergeEventFields(event, common.MapStr{ + "url": je.urlFields, + "synthetics": common.MapStr{ + "type": "heartbeat/summary", + }, + "monitor": common.MapStr{ + "duration": common.MapStr{ + "us": int64(je.end.Sub(je.start) / time.Microsecond), + }, + }, + }) + return je.lastError + } + return fmt.Errorf("journey did not finish executing, %d steps ran", je.stepCount) +} + +func stepError(e *SynthError) error { + return fmt.Errorf("error executing step: %s", e.String()) +} diff --git a/x-pack/heartbeat/monitors/browser/synthexec/enrich_test.go b/x-pack/heartbeat/monitors/browser/synthexec/enrich_test.go new file mode 100644 index 000000000000..3ea3eb1ec58c --- /dev/null +++ b/x-pack/heartbeat/monitors/browser/synthexec/enrich_test.go @@ -0,0 +1,108 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package synthexec + +import ( + "fmt" + "net/url" + "testing" + "time" + + "github.com/stretchr/testify/require" + + "github.com/elastic/beats/v7/heartbeat/monitors/wrappers" + + "github.com/elastic/beats/v7/libbeat/beat" + "github.com/elastic/beats/v7/libbeat/common" + "github.com/elastic/go-lookslike" + "github.com/elastic/go-lookslike/testslike" +) + +func TestJourneyEnricher(t *testing.T) { + journey := &Journey{ + Name: "A Journey Name", + Id: "my-journey-id", + } + syntherr := &SynthError{ + Message: "my-errmsg", + Name: "my-errname", + Stack: "my\nerr\nstack", + } + journeyStart := &SynthEvent{ + Type: "journey/start", + TimestampEpochMicros: 1000, + PackageVersion: "1.0.0", + Journey: journey, + Payload: common.MapStr{}, + } + journeyEnd := &SynthEvent{ + Type: "journey/end", + TimestampEpochMicros: 2000, + PackageVersion: "1.0.0", + Journey: journey, + Payload: common.MapStr{}, + } + makeStepEvent := func(typ string, ts float64, name string, index int, urlstr string, err *SynthError) *SynthEvent { + return &SynthEvent{ + Type: typ, + TimestampEpochMicros: 1000 + ts, + PackageVersion: "1.0.0", + Step: &Step{Name: name, Index: index}, + Error: err, + Payload: common.MapStr{}, + URL: urlstr, + } + } + url1 := "http://example.net/url1" + url2 := "http://example.net/url2" + url3 := "http://example.net/url3" + + synthEvents := []*SynthEvent{ + journeyStart, + makeStepEvent("step/start", 10, "Step1", 1, "", nil), + makeStepEvent("step/end", 20, "Step1", 1, url1, nil), + makeStepEvent("step/start", 21, "Step2", 1, "", nil), + makeStepEvent("step/end", 30, "Step2", 1, url2, syntherr), + makeStepEvent("step/start", 31, "Step3", 1, "", nil), + makeStepEvent("step/end", 40, "Step3", 1, url3, nil), + journeyEnd, + } + + je := &journeyEnricher{} + + // We need an expectation for each input + // plus a final expectation for the summary which comes + // on the nil data. + for idx, se := range append(synthEvents, nil) { + e := &beat.Event{} + t.Run(fmt.Sprintf("event %d", idx), func(t *testing.T) { + enrichErr := je.enrich(e, se) + + if se != nil { + // Test that the created event includes the mapped + // version of the event + testslike.Test(t, lookslike.MustCompile(se.ToMap()), e.Fields) + require.Equal(t, se.Timestamp().Unix(), e.Timestamp.Unix()) + + if se.Error != nil { + require.Equal(t, stepError(se.Error), enrichErr) + } + } else { + require.Equal(t, stepError(syntherr), enrichErr) + + u, _ := url.Parse(url1) + t.Run("summary", func(t *testing.T) { + v := lookslike.MustCompile(common.MapStr{ + "synthetics.type": "heartbeat/summary", + "url": wrappers.URLFields(u), + "monitor.duration.us": int64(journeyEnd.Timestamp().Sub(journeyStart.Timestamp()) / time.Microsecond), + }) + + testslike.Test(t, v, e.Fields) + }) + } + }) + } +} diff --git a/x-pack/heartbeat/monitors/browser/synthexec/execmultiplexer.go b/x-pack/heartbeat/monitors/browser/synthexec/execmultiplexer.go new file mode 100644 index 000000000000..29fa9a8f3b6c --- /dev/null +++ b/x-pack/heartbeat/monitors/browser/synthexec/execmultiplexer.go @@ -0,0 +1,50 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package synthexec + +import ( + "github.com/elastic/beats/v7/libbeat/common/atomic" +) + +type ExecMultiplexer struct { + eventCounter *atomic.Int + synthEvents chan *SynthEvent + done chan struct{} +} + +func (e ExecMultiplexer) Close() { + close(e.synthEvents) +} + +func (e ExecMultiplexer) writeSynthEvent(se *SynthEvent) { + if se == nil { // we skip writing nil events, since a nil means we're done + return + } + se.index = e.eventCounter.Inc() + e.synthEvents <- se +} + +// SynthEvents returns a read only channel for synth events +func (e ExecMultiplexer) SynthEvents() <-chan *SynthEvent { + return e.synthEvents +} + +// Done returns a channel that is closed when all output has been received +func (e ExecMultiplexer) Done() <-chan struct{} { + return e.done +} + +// Wait blocks until the multiplexer is done and has returned all data +func (e ExecMultiplexer) Wait() { + <-e.done +} + +func NewExecMultiplexer() *ExecMultiplexer { + return &ExecMultiplexer{ + eventCounter: atomic.NewInt(-1), // Start from -1 so first call to Inc returns 0 + synthEvents: make(chan *SynthEvent), + done: make(chan struct{}), + } +} diff --git a/x-pack/heartbeat/monitors/browser/synthexec/synthexec.go b/x-pack/heartbeat/monitors/browser/synthexec/synthexec.go new file mode 100644 index 000000000000..41a5c1ae88cf --- /dev/null +++ b/x-pack/heartbeat/monitors/browser/synthexec/synthexec.go @@ -0,0 +1,341 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package synthexec + +import ( + "bufio" + "context" + "encoding/json" + "fmt" + "io" + "os" + "os/exec" + "path/filepath" + "regexp" + "strings" + "sync" + "time" + + "github.com/elastic/beats/v7/heartbeat/beater" + "github.com/elastic/beats/v7/heartbeat/monitors/jobs" + "github.com/elastic/beats/v7/libbeat/beat" + "github.com/elastic/beats/v7/libbeat/common" + "github.com/elastic/beats/v7/libbeat/logp" +) + +const debugSelector = "synthexec" + +func init() { + beater.RegisterJourneyLister(ListJourneys) +} + +// ListJourneys takes the given suite performs a dry run, capturing the Journey names, and returns the list. +func ListJourneys(ctx context.Context, suiteFile string, params common.MapStr) (journeyNames []string, err error) { + dir, err := getSuiteDir(suiteFile) + if err != nil { + return nil, err + } + + if os.Getenv("ELASTIC_SYNTHETICS_OFFLINE") != "true" { + // Ensure all deps installed + err = runSimpleCommand(exec.Command("npm", "install"), dir) + if err != nil { + return nil, err + } + + // Update playwright, needs to run separately to ensure post-install hook is run that downloads + // chrome. See https://github.com/microsoft/playwright/issues/3712 + err = runSimpleCommand(exec.Command("npm", "install", "playwright-chromium"), dir) + if err != nil { + return nil, err + } + } + + cmdFactory, err := suiteCommandFactory(dir, suiteFile, "--dry-run") + if err != nil { + return nil, err + } + + mpx, err := runCmd(ctx, cmdFactory(), nil, params) +Outer: + for { + select { + case se := <-mpx.SynthEvents(): + if se == nil { + break Outer + } + if se.Type == "journey/register" { + journeyNames = append(journeyNames, se.Journey.Name) + } + } + } + + logp.Info("Discovered journeys %#v", journeyNames) + return journeyNames, nil +} + +// SuiteJob will run a single journey by name from the given suite. +func SuiteJob(ctx context.Context, suiteFile string, journeyName string, params common.MapStr) (jobs.Job, error) { + newCmd, err := suiteCommandFactory(suiteFile, suiteFile, "--screenshots", "--journey-name", journeyName) + if err != nil { + return nil, err + } + + return startCmdJob(ctx, newCmd, nil, params), nil +} + +func suiteCommandFactory(suiteFile string, args ...string) (func() *exec.Cmd, error) { + npmRoot, err := getNpmRoot(suiteFile) + if err != nil { + return nil, err + } + + newCmd := func() *exec.Cmd { + bin := filepath.Join(npmRoot, "node_modules/.bin/elastic-synthetics") + cmd := exec.Command(bin, args...) + cmd.Dir = npmRoot + return cmd + } + + return newCmd, nil +} + +// InlineJourneyJob returns a job that runs the given source as a single journey. +func InlineJourneyJob(ctx context.Context, script string, params common.MapStr) jobs.Job { + newCmd := func() *exec.Cmd { + return exec.Command("elastic-synthetics", "--inline", "--screenshots") + } + + return startCmdJob(ctx, newCmd, &script, params) +} + +// startCmdJob adapts commands into a heartbeat job. This is a little awkward given that the command's output is +// available via a sequence of events in the multiplexer, while heartbeat jobs are tail recursive continuations. +// Here, we adapt one to the other, where each recursive job pulls another item off the chan until none are left. +func startCmdJob(ctx context.Context, newCmd func() *exec.Cmd, stdinStr *string, params common.MapStr) jobs.Job { + return func(event *beat.Event) ([]jobs.Job, error) { + mpx, err := runCmd(ctx, newCmd(), stdinStr, params) + if err != nil { + return nil, err + } + return []jobs.Job{readResultsJob(ctx, mpx.SynthEvents(), newJourneyEnricher())}, nil + } +} + +// readResultsJob adapts the output of an ExecMultiplexer into a Job, that uses continuations +// to read all output. +func readResultsJob(ctx context.Context, synthEvents <-chan *SynthEvent, je *journeyEnricher) jobs.Job { + return func(event *beat.Event) (conts []jobs.Job, err error) { + select { + case se := <-synthEvents: + err = je.enrich(event, se) + if se != nil { + return []jobs.Job{readResultsJob(ctx, synthEvents, je)}, err + } else { + return nil, err + } + } + } +} + +// runCmd runs the given command, piping stdinStr if present to the command's stdin, and supplying +// the params var as a CLI argument. +func runCmd( + ctx context.Context, + cmd *exec.Cmd, + stdinStr *string, + params common.MapStr, +) (mpx *ExecMultiplexer, err error) { + mpx = NewExecMultiplexer() + // Setup a pipe for JSON structured output + jsonReader, jsonWriter, err := os.Pipe() + if err != nil { + return nil, err + } + + // Common args + cmd.Env = append(os.Environ(), "NODE_ENV=production") + // We need to pass both files in here otherwise we get a broken pipe, even + // though node only touches the writer + cmd.ExtraFiles = []*os.File{jsonWriter, jsonReader} + cmd.Args = append(cmd.Args, + // Out fd is always 3 since it's the only FD passed into cmd.ExtraFiles + // see the docs for ExtraFiles in https://golang.org/pkg/os/exec/#Cmd + "--json", + "--network", + "--outfd", "3", + ) + if len(params) > 0 { + paramsBytes, _ := json.Marshal(params) + cmd.Args = append(cmd.Args, "--suite-params", string(paramsBytes)) + } + + logp.Info("Running command: %s in directory: '%s'", cmd.String(), cmd.Dir) + + if stdinStr != nil { + logp.Debug(debugSelector, "Using stdin str %s", *stdinStr) + cmd.Stdin = strings.NewReader(*stdinStr) + } + + wg := sync.WaitGroup{} + + // Send stdout into the output + stdoutPipe, err := cmd.StdoutPipe() + wg.Add(1) + go func() { + scanToSynthEvents(stdoutPipe, stdoutToSynthEvent, mpx.writeSynthEvent) + wg.Done() + }() + + stderrPipe, err := cmd.StderrPipe() + wg.Add(1) + go func() { + scanToSynthEvents(stderrPipe, stderrToSynthEvent, mpx.writeSynthEvent) + wg.Done() + }() + + // Send the test results into the output + wg.Add(1) + go func() { + scanToSynthEvents(jsonReader, jsonToSynthEvent, mpx.writeSynthEvent) + wg.Done() + }() + err = cmd.Start() + + // Kill the process if the context ends + go func() { + select { + case <-ctx.Done(): + cmd.Process.Kill() + } + }() + + // Close mpx after the process is done and all events have been sent / consumed + go func() { + err := cmd.Wait() + if err != nil { + logp.Err("Error waiting for command %s: %s", cmd.String(), err) + } + jsonWriter.Close() + jsonReader.Close() + logp.Info("Command has completed(%d): %s", cmd.ProcessState.ExitCode(), cmd.String()) + if err != nil { + str := fmt.Sprintf("command exited with status %d: %s", cmd.ProcessState.ExitCode(), err) + mpx.writeSynthEvent(&SynthEvent{ + Type: "cmd/status", + Error: &SynthError{Name: "cmdexit", Message: str}, + }) + logp.Warn("Error executing command '%s': %s", cmd.String(), err) + } + wg.Wait() + mpx.Close() + }() + + return mpx, nil +} + +// scanToSynthEvents takes a reader, a transform function, and a callback, and processes +// each scanned line via the reader before invoking it with the callback. +func scanToSynthEvents(rdr io.ReadCloser, transform func(bytes []byte, text string) (*SynthEvent, error), cb func(*SynthEvent)) error { + scanner := bufio.NewScanner(rdr) + buf := make([]byte, 1024*1024*2) // 2MiB initial buffer (images can be big!) + scanner.Buffer(buf, 1024*1024*40) // Max 50MiB Buffer + + for scanner.Scan() { + if scanner.Err() != nil { + logp.Warn("Error scanning results %s", scanner.Err()) + return scanner.Err() + } + + se, err := transform(scanner.Bytes(), scanner.Text()) + if err != nil { + logp.Warn("error parsing line: %s for line: %s", err, scanner.Text()) + continue + } + if se != nil { + cb(se) + } + } + + return nil +} + +var stdoutToSynthEvent = lineToSynthEventFactory("stdout") +var stderrToSynthEvent = lineToSynthEventFactory("stderr") + +// lineToSynthEventFactory is a factory that can take a line from the scanner and transform it into a *SynthEvent. +func lineToSynthEventFactory(typ string) func(bytes []byte, text string) (res *SynthEvent, err error) { + return func(bytes []byte, text string) (res *SynthEvent, err error) { + logp.Info("%s: %s", typ, text) + return &SynthEvent{ + Type: typ, + TimestampEpochMicros: float64(time.Now().UnixNano() / int64(time.Millisecond)), + Payload: map[string]interface{}{ + "message": text, + }, + }, nil + } +} + +var emptyStringRegexp = regexp.MustCompile(`^\s*$`) + +// jsonToSynthEvent can take a line from the scanner and transform it into a *SynthEvent. Will return +// nil res on empty lines. +func jsonToSynthEvent(bytes []byte, text string) (res *SynthEvent, err error) { + // Skip empty lines + if emptyStringRegexp.Match(bytes) { + return nil, nil + } + + res = &SynthEvent{} + err = json.Unmarshal(bytes, res) + if err != nil { + return nil, err + } + + if res.Type == "" { + return nil, fmt.Errorf("Unmarshal succeeded, but no type found for: %s", text) + } + return +} + +func getSuiteDir(suiteFile string) (string, error) { + path, err := filepath.Abs(suiteFile) + if err != nil { + return "", err + } + stat, err := os.Stat(path) + if err != nil { + return "", err + } + + if stat.IsDir() { + return suiteFile, nil + } + + return filepath.Dir(suiteFile), nil +} + +func runSimpleCommand(cmd *exec.Cmd, dir string) error { + cmd.Dir = dir + logp.Info("Running %s in %s", cmd, dir) + output, err := cmd.CombinedOutput() + logp.Info("Ran %s got %s", cmd, string(output)) + return err +} + +func getNpmRoot(path string) (string, error) { + candidate := filepath.Join(path, "package.json") + _, err := os.Lstat(candidate) + if err == nil { + return path, nil + } + // Try again one level up + parent := filepath.Dir(path) + if len(parent) < 2 { + return "", fmt.Errorf("no package.json found") + } + return getNpmRoot(parent) +} diff --git a/x-pack/heartbeat/monitors/browser/synthexec/synthexec_test.go b/x-pack/heartbeat/monitors/browser/synthexec/synthexec_test.go new file mode 100644 index 000000000000..be8b4a8df8bd --- /dev/null +++ b/x-pack/heartbeat/monitors/browser/synthexec/synthexec_test.go @@ -0,0 +1,156 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package synthexec + +import ( + "context" + "fmt" + "os/exec" + "path" + "path/filepath" + "runtime" + "testing" + "time" + + "github.com/go-test/deep" + "github.com/stretchr/testify/require" +) + +func TestLineToSynthEventFactory(t *testing.T) { + testType := "mytype" + testText := "sometext" + f := lineToSynthEventFactory(testType) + res, err := f([]byte(testText), testText) + require.NoError(t, err) + require.NotNil(t, res) + require.Equal(t, testType, res.Type) + require.Equal(t, testText, res.Payload["message"]) + require.Greater(t, res.TimestampEpochMicros, float64(0)) +} + +func TestJsonToSynthEvent(t *testing.T) { + tests := []struct { + name string + line string + synthEvent *SynthEvent + wantErr bool + }{ + { + name: "an empty line", + line: "", + synthEvent: nil, + }, + { + name: "a blank line", + line: " ", + synthEvent: nil, + }, + { + name: "an invalid line", + line: `{"foo": "bar"}"`, + synthEvent: nil, + wantErr: true, + }, + { + name: "a valid line", + line: `{"@timestamp":7165676811882692608,"type":"step/end","journey":{"name":"inline","id":"inline"},"step":{"name":"Go to home page","index":0},"payload":{"source":"async ({page, params}) => {await page.goto('http://www.elastic.co')}","duration_ms":3472,"url":"https://www.elastic.co/","status":"succeeded"},"url":"https://www.elastic.co/","package_version":"0.0.1"}`, + synthEvent: &SynthEvent{ + TimestampEpochMicros: 7165676811882692608, + Type: "step/end", + Journey: &Journey{ + Name: "inline", + Id: "inline", + }, + Step: &Step{ + Name: "Go to home page", + Index: 0, + }, + Payload: map[string]interface{}{ + "source": "async ({page, params}) => {await page.goto('http://www.elastic.co')}", + "duration_ms": float64(3472), + "url": "https://www.elastic.co/", + "status": "succeeded", + }, + PackageVersion: "0.0.1", + URL: "https://www.elastic.co/", + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + gotRes, err := jsonToSynthEvent([]byte(tt.line), tt.line) + if tt.wantErr { + require.Error(t, err) + } else { + require.NoError(t, err, "for line %s", tt.line) + } + + if diff := deep.Equal(gotRes, tt.synthEvent); diff != nil { + t.Error(diff) + } + }) + } +} + +func TestRunCmd(t *testing.T) { + cmd := exec.Command("go", "run", "./main.go") + _, filename, _, _ := runtime.Caller(0) + cmd.Dir = path.Join(filepath.Dir(filename), "testcmd") + + stdinStr := "MY_STDIN" + + mpx, err := runCmd(context.TODO(), cmd, &stdinStr, nil) + require.NoError(t, err) + + var synthEvents []*SynthEvent + timeout := time.NewTimer(time.Minute) +Loop: + for { + select { + case se := <-mpx.SynthEvents(): + if se == nil { + break Loop + } + synthEvents = append(synthEvents, se) + case <-timeout.C: + require.Fail(t, "timeout expired for testing runCmd!") + } + } + + eventsWithType := func(typ string) (matched []*SynthEvent) { + for _, se := range synthEvents { + if se.Type == typ { + matched = append(matched, se) + } + } + return + } + + t.Run("has echo'd stdin to stdout", func(t *testing.T) { + stdoutEvents := eventsWithType("stdout") + require.Equal(t, stdinStr, stdoutEvents[0].Payload["message"]) + }) + t.Run("has echo'd two lines to stderr", func(t *testing.T) { + stdoutEvents := eventsWithType("stderr") + require.Equal(t, "Stderr 1", stdoutEvents[0].Payload["message"]) + require.Equal(t, "Stderr 2", stdoutEvents[1].Payload["message"]) + }) + t.Run("should have one event per line in sampleinput", func(t *testing.T) { + // 27 lines are in sample.ndjson + 2 from stderr + 1 from stdout + expected := 27 + 2 + 1 + require.Len(t, synthEvents, expected) + }) + + expectedEventTypes := []string{ + "journey/start", + "step/end", + "journey/end", + } + for _, typ := range expectedEventTypes { + t.Run(fmt.Sprintf("Should have at least one event of type %s", typ), func(t *testing.T) { + require.GreaterOrEqual(t, len(eventsWithType(typ)), 1) + }) + } +} diff --git a/x-pack/heartbeat/monitors/browser/synthexec/synthtypes.go b/x-pack/heartbeat/monitors/browser/synthexec/synthtypes.go new file mode 100644 index 000000000000..de0c76e14013 --- /dev/null +++ b/x-pack/heartbeat/monitors/browser/synthexec/synthtypes.go @@ -0,0 +1,118 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package synthexec + +import ( + "fmt" + "math" + "net/url" + "time" + + "github.com/elastic/beats/v7/heartbeat/monitors/wrappers" + "github.com/elastic/beats/v7/libbeat/common" + "github.com/elastic/beats/v7/libbeat/logp" +) + +type SynthEvent struct { + Type string `json:"type"` + PackageVersion string `json:"package_version"` + Step *Step `json:"step"` + Journey *Journey `json:"journey"` + TimestampEpochMicros float64 `json:"@timestamp"` + Payload common.MapStr `json:"payload"` + Blob string `json:"blob"` + BlobMime string `json:"blob_mime"` + Error *SynthError `json:"error"` + URL string `json:"url"` + Status string `json:"status"` + index int +} + +func (se SynthEvent) ToMap() (m common.MapStr) { + // We don't add @timestamp to the map string since that's specially handled in beat.Event + m = common.MapStr{ + "synthetics": common.MapStr{ + "type": se.Type, + "package_version": se.PackageVersion, + "payload": se.Payload, + }, + } + if se.Blob != "" { + m.Put("synthetics.blob", se.Blob) + } + if se.BlobMime != "" { + m.Put("synthetics.blob_mime", se.BlobMime) + } + if se.Step != nil { + m.Put("synthetics.step", se.Step.ToMap()) + } + if se.Journey != nil { + m.Put("synthetics.journey", se.Journey.ToMap()) + } + if se.Error != nil { + m.Put("synthetics.error", se.Error.toMap()) + } + + if se.URL != "" { + u, e := url.Parse(se.URL) + if e != nil { + logp.Warn("Could not parse synthetics URL '%s': %s", se.URL, e.Error()) + } else { + m["url"] = wrappers.URLFields(u) + } + } + + return m +} + +func (se SynthEvent) Timestamp() time.Time { + seconds := se.TimestampEpochMicros / 1e6 + wholeSeconds := math.Floor(seconds) + micros := (seconds - wholeSeconds) * 1e6 + nanos := micros * 1000 + return time.Unix(int64(wholeSeconds), int64(nanos)) +} + +type SynthError struct { + Name string `json:"name"` + Message string `json:"message"` + Stack string `json:"stack"` +} + +func (se *SynthError) String() string { + return fmt.Sprintf("%s: %s\n", se.Name, se.Message) +} + +func (se *SynthError) toMap() common.MapStr { + return common.MapStr{ + "name": se.Name, + "message": se.Message, + "stack": se.Stack, + } +} + +type Step struct { + Name string `json:"name"` + Index int `json:"index"` +} + +func (s *Step) ToMap() common.MapStr { + return common.MapStr{ + "name": s.Name, + "index": s.Index, + } +} + +type Journey struct { + Name string `json:"name"` + Id string `json:"id"` +} + +func (j Journey) ToMap() common.MapStr { + return common.MapStr{ + "name": j.Name, + "id": j.Id, + } +} diff --git a/x-pack/heartbeat/monitors/browser/synthexec/synthtypes_test.go b/x-pack/heartbeat/monitors/browser/synthexec/synthtypes_test.go new file mode 100644 index 000000000000..775c5380137d --- /dev/null +++ b/x-pack/heartbeat/monitors/browser/synthexec/synthtypes_test.go @@ -0,0 +1,17 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package synthexec + +import ( + "testing" + "time" + + "github.com/stretchr/testify/require" +) + +func TestSynthEventTimestamp(t *testing.T) { + se := SynthEvent{TimestampEpochMicros: 1000} // 1ms + require.Equal(t, time.Unix(0, int64(time.Millisecond)), se.Timestamp()) +} diff --git a/x-pack/heartbeat/monitors/browser/synthexec/testcmd/main.go b/x-pack/heartbeat/monitors/browser/synthexec/testcmd/main.go new file mode 100644 index 000000000000..57f2a48f2ccb --- /dev/null +++ b/x-pack/heartbeat/monitors/browser/synthexec/testcmd/main.go @@ -0,0 +1,38 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package main + +import ( + "bufio" + "fmt" + "os" +) + +func main() { + // Sample output to test stdout + stdin := bufio.NewReader(os.Stdin) + + stdinLine, _ := stdin.ReadString('\n') + fmt.Fprintln(os.Stdout, stdinLine) + fmt.Fprintln(os.Stderr, "Stderr 1") + fmt.Fprintln(os.Stderr, "Stderr 2") + + // For sending JSON results + pipe := os.NewFile(3, "pipe") + + file, err := os.Open("sample.ndjson") + if err != nil { + fmt.Fprintf(os.Stderr, "could not open samplerun.ndjson: %s\n", err) + os.Exit(1) + } + scanner := bufio.NewScanner(file) + for scanner.Scan() { + fmt.Fprintln(pipe, scanner.Text()) + } + if scanner.Err() != nil { + fmt.Printf("Scanner error %s", scanner.Err()) + os.Exit(1) + } +} diff --git a/x-pack/heartbeat/monitors/browser/synthexec/testcmd/sample.ndjson b/x-pack/heartbeat/monitors/browser/synthexec/testcmd/sample.ndjson new file mode 100644 index 000000000000..6f876789cd00 --- /dev/null +++ b/x-pack/heartbeat/monitors/browser/synthexec/testcmd/sample.ndjson @@ -0,0 +1,27 @@ +{"type":"journey/start","@timestamp":1607117541546436.5,"journey":{"name":"basic addition and completion of single task","id":"basic addition and completion of single task"},"payload":{"params":{}},"package_version":"0.0.1-alpha.7"} +{"type":"step/end","@timestamp":1607117541621599.8,"journey":{"name":"basic addition and completion of single task","id":"basic addition and completion of single task"},"step":{"name":"go to app","index":1},"payload":{"source":"async () => {\n const path = 'file://' + path_1.join(__dirname, 'app', 'index.html');\n await page.goto(path);\n }","start":341212.029364436,"end":341212.103651151,"url":"file:///home/andrewvc/projects/synthetics/examples/todos/app/index.html","status":"succeeded"},"url":"file:///home/andrewvc/projects/synthetics/examples/todos/app/index.html","package_version":"0.0.1-alpha.7"} +{"type":"step/end","@timestamp":1607117541779627.2,"journey":{"name":"basic addition and completion of single task","id":"basic addition and completion of single task"},"step":{"name":"add task Don't put salt in your eyes","index":2},"payload":{"source":"async () => {\n const input = await page.$('input.new-todo');\n await input.type(task);\n await input.press('Enter');\n }","start":341212.103784783,"end":341212.261715767,"url":"file:///home/andrewvc/projects/synthetics/examples/todos/app/index.html","status":"succeeded"},"url":"file:///home/andrewvc/projects/synthetics/examples/todos/app/index.html","package_version":"0.0.1-alpha.7"} +{"type":"step/end","@timestamp":1607117541788766.5,"journey":{"name":"basic addition and completion of single task","id":"basic addition and completion of single task"},"step":{"name":"check that task list has exactly 1 elements","index":3},"payload":{"source":"async () => {\n assert.deepEqual((await page.$$(todosSelector)).length, size);\n }","start":341212.261829709,"end":341212.2708556,"url":"file:///home/andrewvc/projects/synthetics/examples/todos/app/index.html","status":"succeeded"},"url":"file:///home/andrewvc/projects/synthetics/examples/todos/app/index.html","package_version":"0.0.1-alpha.7"} +{"type":"step/end","@timestamp":1607117541820090.5,"journey":{"name":"basic addition and completion of single task","id":"basic addition and completion of single task"},"step":{"name":"check for task 'Don't put salt in your eyes' in list","index":4},"payload":{"source":"async () => {\n return exports.findTask(page, task);\n }","start":341212.270962065,"end":341212.302167684,"url":"file:///home/andrewvc/projects/synthetics/examples/todos/app/index.html","status":"succeeded"},"url":"file:///home/andrewvc/projects/synthetics/examples/todos/app/index.html","package_version":"0.0.1-alpha.7"} +{"type":"step/end","@timestamp":1607117541942297.5,"journey":{"name":"basic addition and completion of single task","id":"basic addition and completion of single task"},"step":{"name":"destroy task 'Don't put salt in your eyes'","index":5},"payload":{"source":"async () => {\n const label = await exports.findTask(page, task);\n // xpath indexes arrays starting at 1!!! Easy to forget!\n const li = await label.$('xpath=ancestor::li[1]');\n const destroyButton = await li.$('button');\n // The destroy button is not visible until hovered. Setup a click test which\n // will wait up to 30s for the button to be visible.\n const clickFuture = destroyButton.click();\n // now hover, making the destroy button clickable\n li.hover();\n // now we are done\n await clickFuture;\n }","start":341212.302313728,"end":341212.424361796,"url":"file:///home/andrewvc/projects/synthetics/examples/todos/app/index.html","status":"succeeded"},"url":"file:///home/andrewvc/projects/synthetics/examples/todos/app/index.html","package_version":"0.0.1-alpha.7"} +{"type":"step/end","@timestamp":1607117541947917.5,"journey":{"name":"basic addition and completion of single task","id":"basic addition and completion of single task"},"step":{"name":"check that task list has exactly 0 elements","index":6},"payload":{"source":"async () => {\n assert.deepEqual((await page.$$(todosSelector)).length, size);\n }","start":341212.42458049,"end":341212.429970544,"url":"file:///home/andrewvc/projects/synthetics/examples/todos/app/index.html","status":"succeeded"},"url":"file:///home/andrewvc/projects/synthetics/examples/todos/app/index.html","package_version":"0.0.1-alpha.7"} +{"type":"journey/end","@timestamp":1607117541949065,"journey":{"name":"basic addition and completion of single task","id":"basic addition and completion of single task"},"payload":{"start":341211.817870545,"end":341212.430915625,"status":"succeeded"},"package_version":"0.0.1-alpha.7"} +{"type":"journey/start","@timestamp":1607117542225471.5,"journey":{"name":"adding and removing a few tasks","id":"adding and removing a few tasks"},"payload":{"params":{}},"package_version":"0.0.1-alpha.7"} +{"type":"step/end","@timestamp":1607117542318604,"journey":{"name":"adding and removing a few tasks","id":"adding and removing a few tasks"},"step":{"name":"go to app","index":1},"payload":{"source":"async () => {\n const path = 'file://' + path_1.join(__dirname, 'app', 'index.html');\n await page.goto(path);\n }","start":341212.708780344,"end":341212.800701342,"url":"file:///home/andrewvc/projects/synthetics/examples/todos/app/index.html","status":"succeeded"},"url":"file:///home/andrewvc/projects/synthetics/examples/todos/app/index.html","package_version":"0.0.1-alpha.7"} +{"type":"step/end","@timestamp":1607117542394037,"journey":{"name":"adding and removing a few tasks","id":"adding and removing a few tasks"},"step":{"name":"add task Task 1","index":2},"payload":{"source":"async () => {\n const input = await page.$('input.new-todo');\n await input.type(task);\n await input.press('Enter');\n }","start":341212.800799559,"end":341212.876132472,"url":"file:///home/andrewvc/projects/synthetics/examples/todos/app/index.html","status":"succeeded"},"url":"file:///home/andrewvc/projects/synthetics/examples/todos/app/index.html","package_version":"0.0.1-alpha.7"} +{"type":"step/end","@timestamp":1607117542428047,"journey":{"name":"adding and removing a few tasks","id":"adding and removing a few tasks"},"step":{"name":"add task Task 2","index":3},"payload":{"source":"async () => {\n const input = await page.$('input.new-todo');\n await input.type(task);\n await input.press('Enter');\n }","start":341212.876206175,"end":341212.910144972,"url":"file:///home/andrewvc/projects/synthetics/examples/todos/app/index.html","status":"succeeded"},"url":"file:///home/andrewvc/projects/synthetics/examples/todos/app/index.html","package_version":"0.0.1-alpha.7"} +{"type":"step/end","@timestamp":1607117542446836.5,"journey":{"name":"adding and removing a few tasks","id":"adding and removing a few tasks"},"step":{"name":"add task Task 3","index":4},"payload":{"source":"async () => {\n const input = await page.$('input.new-todo');\n await input.type(task);\n await input.press('Enter');\n }","start":341212.910219136,"end":341212.928944754,"url":"file:///home/andrewvc/projects/synthetics/examples/todos/app/index.html","status":"succeeded"},"url":"file:///home/andrewvc/projects/synthetics/examples/todos/app/index.html","package_version":"0.0.1-alpha.7"} +{"type":"step/end","@timestamp":1607117542450801.8,"journey":{"name":"adding and removing a few tasks","id":"adding and removing a few tasks"},"step":{"name":"check that task list has exactly 3 elements","index":5},"payload":{"source":"async () => {\n assert.deepEqual((await page.$$(todosSelector)).length, size);\n }","start":341212.929002947,"end":341212.932912962,"url":"file:///home/andrewvc/projects/synthetics/examples/todos/app/index.html","status":"succeeded"},"url":"file:///home/andrewvc/projects/synthetics/examples/todos/app/index.html","package_version":"0.0.1-alpha.7"} +{"type":"step/end","@timestamp":1607117542543143,"journey":{"name":"adding and removing a few tasks","id":"adding and removing a few tasks"},"step":{"name":"destroy task 'Task 2'","index":6},"payload":{"source":"async () => {\n const label = await exports.findTask(page, task);\n // xpath indexes arrays starting at 1!!! Easy to forget!\n const li = await label.$('xpath=ancestor::li[1]');\n const destroyButton = await li.$('button');\n // The destroy button is not visible until hovered. Setup a click test which\n // will wait up to 30s for the button to be visible.\n const clickFuture = destroyButton.click();\n // now hover, making the destroy button clickable\n li.hover();\n // now we are done\n await clickFuture;\n }","start":341212.932965728,"end":341213.025229349,"url":"file:///home/andrewvc/projects/synthetics/examples/todos/app/index.html","status":"succeeded"},"url":"file:///home/andrewvc/projects/synthetics/examples/todos/app/index.html","package_version":"0.0.1-alpha.7"} +{"type":"step/end","@timestamp":1607117542554721.2,"journey":{"name":"adding and removing a few tasks","id":"adding and removing a few tasks"},"step":{"name":"check that task list has exactly 2 elements","index":7},"payload":{"source":"async () => {\n assert.deepEqual((await page.$$(todosSelector)).length, size);\n }","start":341213.025439003,"end":341213.036798848,"url":"file:///home/andrewvc/projects/synthetics/examples/todos/app/index.html","status":"succeeded"},"url":"file:///home/andrewvc/projects/synthetics/examples/todos/app/index.html","package_version":"0.0.1-alpha.7"} +{"type":"step/end","@timestamp":1607117542609932.2,"journey":{"name":"adding and removing a few tasks","id":"adding and removing a few tasks"},"step":{"name":"add task Task 4","index":8},"payload":{"source":"async () => {\n const input = await page.$('input.new-todo');\n await input.type(task);\n await input.press('Enter');\n }","start":341213.037009129,"end":341213.09202778,"url":"file:///home/andrewvc/projects/synthetics/examples/todos/app/index.html","status":"succeeded"},"url":"file:///home/andrewvc/projects/synthetics/examples/todos/app/index.html","package_version":"0.0.1-alpha.7"} +{"type":"step/end","@timestamp":1607117542614951.2,"journey":{"name":"adding and removing a few tasks","id":"adding and removing a few tasks"},"step":{"name":"check that task list has exactly 3 elements","index":9},"payload":{"source":"async () => {\n assert.deepEqual((await page.$$(todosSelector)).length, size);\n }","start":341213.092127749,"end":341213.097058616,"url":"file:///home/andrewvc/projects/synthetics/examples/todos/app/index.html","status":"succeeded"},"url":"file:///home/andrewvc/projects/synthetics/examples/todos/app/index.html","package_version":"0.0.1-alpha.7"} +{"type":"journey/end","@timestamp":1607117542615095.5,"journey":{"name":"adding and removing a few tasks","id":"adding and removing a few tasks"},"payload":{"start":341212.454758367,"end":341213.097198448,"status":"succeeded"},"package_version":"0.0.1-alpha.7"} +{"type":"journey/start","@timestamp":1607117542840628.8,"journey":{"name":"check that title is present","id":"check that title is present"},"payload":{"params":{}},"package_version":"0.0.1-alpha.7"} +{"type":"step/end","@timestamp":1607117542894122,"journey":{"name":"check that title is present","id":"check that title is present"},"step":{"name":"go to app","index":1},"payload":{"source":"async () => {\n const path = 'file://' + path_1.join(__dirname, 'app', 'index.html');\n await page.goto(path);\n }","start":341213.322930786,"end":341213.376232828,"url":"file:///home/andrewvc/projects/synthetics/examples/todos/app/index.html","status":"succeeded"},"url":"file:///home/andrewvc/projects/synthetics/examples/todos/app/index.html","package_version":"0.0.1-alpha.7"} +{"type":"step/end","@timestamp":1607117542948427.2,"journey":{"name":"check that title is present","id":"check that title is present"},"step":{"name":"check title is present","index":2},"payload":{"source":"async () => {\n const header = await page.$('h1');\n assert_1.deepStrictEqual(await header.textContent(), 'todos');\n }","start":341213.376291693,"end":341213.430537539,"url":"file:///home/andrewvc/projects/synthetics/examples/todos/app/index.html","status":"succeeded"},"url":"file:///home/andrewvc/projects/synthetics/examples/todos/app/index.html","package_version":"0.0.1-alpha.7"} +{"type":"journey/end","@timestamp":1607117542948528.5,"journey":{"name":"check that title is present","id":"check that title is present"},"payload":{"start":341213.105001478,"end":341213.430638234,"status":"succeeded"},"package_version":"0.0.1-alpha.7"} +{"type":"journey/start","@timestamp":1607117543172952.8,"journey":{"name":"check that input placeholder is correct","id":"check that input placeholder is correct"},"payload":{"params":{}},"package_version":"0.0.1-alpha.7"} +{"type":"step/end","@timestamp":1607117543234134.5,"journey":{"name":"check that input placeholder is correct","id":"check that input placeholder is correct"},"step":{"name":"go to app","index":1},"payload":{"source":"async () => {\n const path = 'file://' + path_1.join(__dirname, 'app', 'index.html');\n await page.goto(path);\n }","start":341213.655273314,"end":341213.716244749,"url":"file:///home/andrewvc/projects/synthetics/examples/todos/app/index.html","status":"succeeded"},"url":"file:///home/andrewvc/projects/synthetics/examples/todos/app/index.html","package_version":"0.0.1-alpha.7"} +{"type":"step/end","@timestamp":1607117543291207.5,"journey":{"name":"check that input placeholder is correct","id":"check that input placeholder is correct"},"step":{"name":"check title is present","index":2},"payload":{"source":"async () => {\n const input = await page.$('input.new-todo');\n assert_1.deepStrictEqual(await input.getAttribute('placeholder'), 'What needs to be done?');\n }","start":341213.716299108,"end":341213.773317297,"url":"file:///home/andrewvc/projects/synthetics/examples/todos/app/index.html","status":"succeeded"},"url":"file:///home/andrewvc/projects/synthetics/examples/todos/app/index.html","package_version":"0.0.1-alpha.7"} +{"type":"journey/end","@timestamp":1607117543291297,"journey":{"name":"check that input placeholder is correct","id":"check that input placeholder is correct"},"payload":{"start":341213.437205638,"end":341213.773406411,"status":"succeeded"},"package_version":"0.0.1-alpha.7"} diff --git a/x-pack/heartbeat/sample-synthetics-config/heartbeat.yml b/x-pack/heartbeat/sample-synthetics-config/heartbeat.yml new file mode 100644 index 000000000000..a47f798246a2 --- /dev/null +++ b/x-pack/heartbeat/sample-synthetics-config/heartbeat.yml @@ -0,0 +1,48 @@ +--- +heartbeat.config.monitors: + path: "${path.config}/monitors.d/*.yml" + reload.enabled: false + reload.period: 5s + +heartbeat.synthetic_suites: +- name: Todos suite + path: "/home/andrewvc/projects/synthetics/examples/todos" + schedule: "@every 1m" + +heartbeat.monitors: +- type: http + id: SimpleHTTP + urls: http://www.google.com + schedule: "@every 15s" + name: Simple HTTP +- type: browser + id: my-monitor + name: My Monitor + script: |- + step("load homepage", async () => { + await page.goto('https://www.elastic.co'); + }); + step("hover over products menu", async () => { + await page.hover('css=[data-nav-item=products]'); + }); + step("failme", async () => { + await page.hhover('css=[data-nav-item=products]'); + }); + step("skip me", async () => { + // noop + }); + schedule: "@every 1m" + +setup.template.settings: + index.number_of_shards: 1 + index.codec: best_compression +setup.kibana: +output.elasticsearch: + hosts: + - localhost:9200 + protocol: http + username: elastic + password: changeme +processors: +- add_observer_metadata: + diff --git a/x-pack/heartbeat/seccomp_linux.go b/x-pack/heartbeat/seccomp_linux.go new file mode 100644 index 000000000000..eee23080c82c --- /dev/null +++ b/x-pack/heartbeat/seccomp_linux.go @@ -0,0 +1,83 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package main + +import ( + "runtime" + + "github.com/elastic/beats/v7/libbeat/common/seccomp" +) + +func init() { + switch runtime.GOARCH { + case "amd64", "386": + // We require a number of syscalls to run. This list was generated with + // mage build && env ELASTIC_SYNTHETICS_CAPABLE=true strace --output=syscalls ./heartbeat --path.config sample-synthetics-config/ -e + // then filtered through: cat syscalls | cut -d '(' -f 1 | egrep '\w+' -o | sort | uniq | xargs -n1 -IFF echo \"FF\" + // We should tighten this up before GA. While it is true that there are probably duplicate + // syscalls here vs. the base, this is probably OK for now. + syscalls := []string{ + "access", + "arch_prctl", + "bind", + "brk", + "clone", + "close", + "epoll_ctl", + "epoll_pwait", + "execve", + "exited", + "fcntl", + "flock", + "fstat", + "futex", + "geteuid", + "getgid", + "getpid", + "getppid", + "getrandom", + "getsockname", + "gettid", + "getuid", + "ioctl", + "mlock", + "mmap", + "mprotect", + "munmap", + "newfstatat", + "openat", + "prctl", + "pread64", + "prlimit64", + "read", + "readlinkat", + "recvfrom", + "rt_sigaction", + "rt_sigprocmask", + "rt_sigreturn", + "sched_getaffinity", + "sendto", + "set_robust_list", + "set_tid_address", + "si_code", + "sigaltstack", + "SIGINT", + "SIGURG", + "SI_KERNEL", + "si_pid", + "si_signo", + "SI_TKILL", + "si_uid", + "socket", + "umask", + "uname", + "with", + "write"} + + if err := seccomp.ModifyDefaultPolicy(seccomp.AddSyscall, syscalls...); err != nil { + panic(err) + } + } +} diff --git a/x-pack/heartbeat/syscalls b/x-pack/heartbeat/syscalls new file mode 100644 index 000000000000..79e5b4ee4489 --- /dev/null +++ b/x-pack/heartbeat/syscalls @@ -0,0 +1,1083 @@ +execve("./heartbeat", ["./heartbeat", "--path.config", "sample-synthetics-config/", "-e"], 0x7ffd13355930 /* 51 vars */) = 0 +brk(NULL) = 0x6ff4000 +arch_prctl(0x3001 /* ARCH_??? */, 0x7ffecd7ed410) = -1 EINVAL (Invalid argument) +access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) +openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 +fstat(3, {st_mode=S_IFREG|0644, st_size=96548, ...}) = 0 +mmap(NULL, 96548, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f2086f03000 +close(3) = 0 +openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3 +read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220\201\0\0\0\0\0\0"..., 832) = 832 +pread64(3, "\4\0\0\0\24\0\0\0\3\0\0\0GNU\0O\305\3743\364B\2216\244\224\306@\261\23\327o"..., 68, 824) = 68 +fstat(3, {st_mode=S_IFREG|0755, st_size=157224, ...}) = 0 +mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2086f01000 +pread64(3, "\4\0\0\0\24\0\0\0\3\0\0\0GNU\0O\305\3743\364B\2216\244\224\306@\261\23\327o"..., 68, 824) = 68 +mmap(NULL, 140408, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2086ede000 +mmap(0x7f2086ee5000, 69632, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7000) = 0x7f2086ee5000 +mmap(0x7f2086ef6000, 20480, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x18000) = 0x7f2086ef6000 +mmap(0x7f2086efb000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1c000) = 0x7f2086efb000 +mmap(0x7f2086efd000, 13432, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f2086efd000 +close(3) = 0 +openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3 +read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 \22\0\0\0\0\0\0"..., 832) = 832 +fstat(3, {st_mode=S_IFREG|0644, st_size=18816, ...}) = 0 +mmap(NULL, 20752, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2086ed8000 +mmap(0x7f2086ed9000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x7f2086ed9000 +mmap(0x7f2086edb000, 4096, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7f2086edb000 +mmap(0x7f2086edc000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7f2086edc000 +close(3) = 0 +openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3 +read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360q\2\0\0\0\0\0"..., 832) = 832 +pread64(3, "\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0"..., 784, 64) = 784 +pread64(3, "\4\0\0\0\20\0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0", 32, 848) = 32 +pread64(3, "\4\0\0\0\24\0\0\0\3\0\0\0GNU\0\363\377?\332\200\270\27\304d\245n\355Y\377\t\334"..., 68, 880) = 68 +fstat(3, {st_mode=S_IFREG|0755, st_size=2029224, ...}) = 0 +pread64(3, "\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0"..., 784, 64) = 784 +pread64(3, "\4\0\0\0\20\0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0", 32, 848) = 32 +pread64(3, "\4\0\0\0\24\0\0\0\3\0\0\0GNU\0\363\377?\332\200\270\27\304d\245n\355Y\377\t\334"..., 68, 880) = 68 +mmap(NULL, 2036952, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2086ce6000 +mprotect(0x7f2086d0b000, 1847296, PROT_NONE) = 0 +mmap(0x7f2086d0b000, 1540096, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x25000) = 0x7f2086d0b000 +mmap(0x7f2086e83000, 303104, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x19d000) = 0x7f2086e83000 +mmap(0x7f2086ece000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1e7000) = 0x7f2086ece000 +mmap(0x7f2086ed4000, 13528, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f2086ed4000 +close(3) = 0 +mmap(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2086ce3000 +arch_prctl(ARCH_SET_FS, 0x7f2086ce3740) = 0 +mprotect(0x7f2086ece000, 12288, PROT_READ) = 0 +mprotect(0x7f2086edc000, 4096, PROT_READ) = 0 +mprotect(0x7f2086efb000, 4096, PROT_READ) = 0 +mprotect(0x5145000, 4096, PROT_READ) = 0 +mprotect(0x7f2086f48000, 4096, PROT_READ) = 0 +munmap(0x7f2086f03000, 96548) = 0 +set_tid_address(0x7f2086ce3a10) = 2027851 +set_robust_list(0x7f2086ce3a20, 24) = 0 +rt_sigaction(SIGRTMIN, {sa_handler=0x7f2086ee5bf0, sa_mask=[], sa_flags=SA_RESTORER|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGRT_1, {sa_handler=0x7f2086ee5c90, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0 +prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0 +brk(NULL) = 0x6ff4000 +brk(0x7015000) = 0x7015000 +sched_getaffinity(0, 8192, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) = 8 +openat(AT_FDCWD, "/sys/kernel/mm/transparent_hugepage/hpage_pmd_size", O_RDONLY) = 3 +read(3, "2097152\n", 20) = 8 +close(3) = 0 +uname({sysname="Linux", nodename="x1e", ...}) = 0 +mmap(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2086ca3000 +mmap(NULL, 131072, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2086c83000 +mmap(NULL, 1048576, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2086b83000 +mmap(NULL, 8388608, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2086383000 +mmap(NULL, 67108864, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2082383000 +mmap(NULL, 536870912, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2062383000 +mmap(0xc000000000, 67108864, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xc000000000 +mmap(0xc000000000, 67108864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xc000000000 +mmap(NULL, 33554432, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2060383000 +mmap(NULL, 2164744, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2060172000 +mmap(0x7f2086c83000, 131072, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f2086c83000 +mmap(0x7f2086c03000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f2086c03000 +mmap(0x7f2086789000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f2086789000 +mmap(0x7f20843b3000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f20843b3000 +mmap(0x7f2072503000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f2072503000 +mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2060072000 +mmap(NULL, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2086f0b000 +mmap(NULL, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2060062000 +mlock(0xc000009000, 4096) = 0 +rt_sigprocmask(SIG_SETMASK, NULL, [], 8) = 0 +sigaltstack(NULL, {ss_sp=NULL, ss_flags=SS_DISABLE, ss_size=0}) = 0 +sigaltstack({ss_sp=0xc000002000, ss_flags=0, ss_size=32768}, NULL) = 0 +rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 +gettid() = 2027851 +mlock(0xc000091000, 4096) = 0 +rt_sigaction(SIGHUP, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGHUP, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGINT, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGINT, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGQUIT, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGQUIT, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGILL, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGILL, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGTRAP, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGTRAP, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGABRT, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGABRT, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGBUS, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGBUS, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGFPE, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGFPE, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGUSR1, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGUSR1, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGSEGV, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGSEGV, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGUSR2, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGUSR2, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGPIPE, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGPIPE, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGALRM, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGALRM, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGTERM, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGTERM, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGSTKFLT, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGSTKFLT, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGCHLD, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGCHLD, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGURG, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGURG, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGXCPU, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGXCPU, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGXFSZ, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGXFSZ, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGVTALRM, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGVTALRM, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGPROF, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGPROF, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGWINCH, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGWINCH, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGIO, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGIO, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGPWR, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGPWR, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGSYS, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGSYS, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGRTMIN, NULL, {sa_handler=0x7f2086ee5bf0, sa_mask=[], sa_flags=SA_RESTORER|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, 8) = 0 +rt_sigaction(SIGRTMIN, NULL, {sa_handler=0x7f2086ee5bf0, sa_mask=[], sa_flags=SA_RESTORER|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, 8) = 0 +rt_sigaction(SIGRTMIN, {sa_handler=0x7f2086ee5bf0, sa_mask=[], sa_flags=SA_RESTORER|SA_ONSTACK|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGRT_1, NULL, {sa_handler=0x7f2086ee5c90, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, 8) = 0 +rt_sigaction(SIGRT_1, NULL, {sa_handler=0x7f2086ee5c90, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, 8) = 0 +rt_sigaction(SIGRT_1, {sa_handler=0x7f2086ee5c90, sa_mask=[], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGRT_2, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGRT_2, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGRT_3, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGRT_3, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGRT_4, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGRT_4, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGRT_5, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGRT_5, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGRT_6, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGRT_6, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGRT_7, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGRT_7, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGRT_8, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGRT_8, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGRT_9, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGRT_9, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGRT_10, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGRT_10, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGRT_11, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGRT_11, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGRT_12, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGRT_12, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGRT_13, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGRT_13, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGRT_14, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGRT_14, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGRT_15, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGRT_15, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGRT_16, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGRT_16, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGRT_17, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGRT_17, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGRT_18, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGRT_18, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGRT_19, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGRT_19, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGRT_20, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGRT_20, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGRT_21, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGRT_21, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGRT_22, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGRT_22, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGRT_23, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGRT_23, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGRT_24, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGRT_24, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGRT_25, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGRT_25, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGRT_26, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGRT_26, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGRT_27, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGRT_27, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGRT_28, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGRT_28, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGRT_29, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGRT_29, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGRT_30, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGRT_30, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGRT_31, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGRT_31, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +rt_sigaction(SIGRT_32, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 +rt_sigaction(SIGRT_32, {sa_handler=0x1312d10, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f2086ef33c0}, NULL, 8) = 0 +mlock(0xc0000a3000, 4096) = 0 +rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0 +mmap(NULL, 8392704, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f205f861000 +mprotect(0x7f205f862000, 8388608, PROT_READ|PROT_WRITE) = 0 +clone(child_stack=0x7f2060060fb0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tid=[2027852], tls=0x7f2060061700, child_tidptr=0x7f20600619d0) = 2027852 +rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 +mlock(0xc0000ab000, 4096) = 0 +--- SIGURG {si_signo=SIGURG, si_code=SI_TKILL, si_pid=2027851, si_uid=1000} --- +rt_sigreturn({mask=[]}) = 0 +rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0 +mmap(NULL, 8392704, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f205f060000 +mprotect(0x7f205f061000, 8388608, PROT_READ|PROT_WRITE) = 0 +clone(child_stack=0x7f205f85ffb0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tid=[2027853], tls=0x7f205f860700, child_tidptr=0x7f205f8609d0) = 2027853 +rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 +--- SIGURG {si_signo=SIGURG, si_code=SI_TKILL, si_pid=2027851, si_uid=1000} --- +rt_sigreturn({mask=[]}) = 0 +--- SIGURG {si_signo=SIGURG, si_code=SI_TKILL, si_pid=2027851, si_uid=1000} --- +rt_sigreturn({mask=[]}) = 0 +futex(0xc000100148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000100148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000050bc8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000050bc8, FUTEX_WAKE_PRIVATE, 1) = 1 +mlock(0xc0000b7000, 4096) = 0 +futex(0x5339cb8, FUTEX_WAKE_PRIVATE, 1) = 1 +rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0 +mmap(NULL, 8392704, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f205e01e000 +mprotect(0x7f205e01f000, 8388608, PROT_READ|PROT_WRITE) = 0 +clone(child_stack=0x7f205e81dfb0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tid=[2027855], tls=0x7f205e81e700, child_tidptr=0x7f205e81e9d0) = 2027855 +rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 +readlinkat(AT_FDCWD, "/proc/self/exe", "/home/andrewvc/golang/src/github"..., 128) = 77 +fcntl(0, F_GETFL) = 0x2 (flags O_RDWR) +futex(0xc000100148, FUTEX_WAKE_PRIVATE, 1) = 1 +mmap(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f205dfde000 +fcntl(1, F_GETFL) = 0x2 (flags O_RDWR) +fcntl(2, F_GETFL) = 0x2 (flags O_RDWR) +futex(0xc000050bc8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000100148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000100148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000050bc8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000100148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000100148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc000050bc8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000100148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000050bc8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000100148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000050bc8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000050bc8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000050bc8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000100148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000050bc8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000050bc8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000050bc8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000100148, FUTEX_WAKE_PRIVATE, 1) = 0 +futex(0xc000050bc8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000050bc8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000050bc8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0001004c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000100148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000100148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000100148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000100148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000100148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000050bc8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000050bc8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000050bc8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000050bc8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0001004c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0001004c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0001004c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000050bc8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0001004c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0001004c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0001004c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0001004c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0001004c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000100148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000100148, FUTEX_WAKE_PRIVATE, 1) = 1 +newfstatat(AT_FDCWD, "/proc", {st_mode=S_IFDIR|0555, st_size=0, ...}, 0) = 0 +mmap(NULL, 1439992, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f205d67d000 +futex(0xc0001004c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000100148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +getppid() = 2027848 +prctl(PR_GET_NAME, "heartbeat") = 0 +getpid() = 2027851 +uname({sysname="Linux", nodename="x1e", ...}) = 0 +openat(AT_FDCWD, "/proc/self/cgroup", O_RDONLY|O_CLOEXEC) = 6 +epoll_ctl(3, EPOLL_CTL_ADD, 6, {EPOLLIN|EPOLLOUT|EPOLLRDHUP|EPOLLET, {u32=1594020696, u64=139777009701720}}) = -1 EPERM (Operation not permitted) +epoll_ctl(3, EPOLL_CTL_DEL, 6, 0xc0005cf9f4) = -1 EPERM (Operation not permitted) +read(6, "12:pids:/user.slice/user-1000.sl"..., 4096) = 449 +read(6, "", 3647) = 0 +close(6) = 0 +ioctl(1, TCGETS, {B38400 opost isig icanon echo ...}) = 0 +futex(0xc0001004c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0005d0148, FUTEX_WAKE_PRIVATE, 1) = 1 +getuid() = 1000 +getgid() = 1000 +futex(0xc0001004c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0005d0148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0001004c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0005d0148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0005d0148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0002cc4c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0001004c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0001004c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0001004c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0002cc4c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0001004c8, FUTEX_WAKE_PRIVATE, 1) = 1 +openat(AT_FDCWD, "/proc/stat", O_RDONLY|O_CLOEXEC) = 6 +epoll_ctl(3, EPOLL_CTL_ADD, 6, {EPOLLIN|EPOLLOUT|EPOLLRDHUP|EPOLLET, {u32=1594020696, u64=139777009701720}}) = 0 +fcntl(6, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE) +fcntl(6, F_SETFL, O_RDONLY|O_NONBLOCK|O_LARGEFILE) = 0 +fstat(6, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 +read(6, "cpu 7835823 2539869 3419733 303"..., 512) = 512 +read(6, "2 900 0 8210 0 0 0\ncpu9 654912 2"..., 1024) = 1024 +read(6, " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"..., 2048) = 2048 +read(6, " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"..., 4096) = 1719 +read(6, "", 2377) = 0 +epoll_ctl(3, EPOLL_CTL_DEL, 6, 0xc0005cfae4) = 0 +close(6) = 0 +getrandom("\x20\x79\x8e\x98\x0b\x11\xca\xa8\x44\xe3\x6e\x01\xca\x2d\xb4\xb4", 16, 0) = 16 +futex(0xc0002cc4c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0001004c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0001004c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0001004c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0002cc4c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0001004c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0001004c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0001004c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0001004c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0001004c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0002cc4c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0002cc4c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0002cc4c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0002cc4c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000100148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0002cc4c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0002cc4c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0002cc4c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0002cc4c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0001004c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0002cc4c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0002cc4c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0002cc4c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0002cc4c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000100148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = -1 EAGAIN (Resource temporarily unavailable) +futex(0xc0002cc4c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0001004c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0001004c8, FUTEX_WAKE_PRIVATE, 1) = 1 +epoll_pwait(3, [], 128, 0, NULL, 1) = 0 +futex(0xc0001004c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x53553c0, FUTEX_WAKE_PRIVATE, 1) = 1 +--- SIGURG {si_signo=SIGURG, si_code=SI_TKILL, si_pid=2027851, si_uid=1000} --- +rt_sigreturn({mask=[]}) = 87272256 +mlock(0xc000713000, 4096) = 0 +futex(0x5339cb8, FUTEX_WAKE_PRIVATE, 1) = 1 +rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0 +mmap(NULL, 8392704, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f203e7fd000 +mprotect(0x7f203e7fe000, 8388608, PROT_READ|PROT_WRITE) = 0 +clone(child_stack=0x7f203effcfb0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tid=[2027861], tls=0x7f203effd700, child_tidptr=0x7f203effd9d0) = 2027861 +rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 +futex(0xc0001004c8, FUTEX_WAKE_PRIVATE, 1) = 1 +--- SIGURG {si_signo=SIGURG, si_code=SI_TKILL, si_pid=2027851, si_uid=1000} --- +rt_sigreturn({mask=[]}) = 1 +openat(AT_FDCWD, "/home/andrewvc/golang/src/github.com/elastic/beats/x-pack/heartbeat/heartbeat", O_RDONLY|O_CLOEXEC) = 6 +epoll_ctl(3, EPOLL_CTL_ADD, 6, {EPOLLIN|EPOLLOUT|EPOLLRDHUP|EPOLLET, {u32=1594020696, u64=139777009701720}}) = -1 EPERM (Operation not permitted) +epoll_ctl(3, EPOLL_CTL_DEL, 6, 0xc00081f99c) = -1 EPERM (Operation not permitted) +fstat(6, {st_mode=S_IFREG|0755, st_size=82994112, ...}) = 0 +pread64(6, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\2\0>\0\1\0\0\0\320\203*\1\0\0\0\0"..., 64, 0) = 64 +pread64(6, "-sdk-go-v2/service/ec2.(*CreateC"..., 64, 10374264) = 64 +pread64(6, "H\213@\20H\213L$\20H\213T$\10H\215\35[i\246\1H\211\34$H\211D$\10H\211"..., 64, 20748528) = 64 +pread64(6, "H\201\354\0\1\0\0H\211\254$\370\0\0\0H\215\254$\370\0\0\0H\213\204$\10\1\0\0H"..., 64, 31122792) = 64 +pread64(6, "\365\0H\211D$\10\350\204\227t\376\220\350.\274w\376\351y\376\377\377\314\314\314\314\314\314\314\314\314"..., 64, 41497056) = 64 +pread64(6, "p%\1\0\200=)\0P:\274\1P:\274\1\3600\4\0@0.\0p:\274\1p:\274\1"..., 64, 51871320) = 64 +pread64(6, "\1\16\4\5\7\26\10\r\3\17\3\30\4\22\3\5\2\5\0\0!\2\16\1\1\2\26\3\26\6\10\2"..., 64, 62245584) = 64 +pread64(6, "\2\4\3%\6\10\2\4\7\31\6\10\5\231\3\3\5\2\5\0\0!\2\260\1\2\241\3\3\n\0\0"..., 64, 72619848) = 64 +close(6) = 0 +--- SIGURG {si_signo=SIGURG, si_code=SI_TKILL, si_pid=2027851, si_uid=1000} --- +rt_sigreturn({mask=[]}) = 20 +mmap(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f205c5db000 +futex(0xc000100148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000100148, FUTEX_WAKE_PRIVATE, 1) = 1 +--- SIGURG {si_signo=SIGURG, si_code=SI_TKILL, si_pid=2027851, si_uid=1000} --- +rt_sigreturn({mask=[]}) = 1 +futex(0xc000100148, FUTEX_WAKE_PRIVATE, 1) = 1 +--- SIGURG {si_signo=SIGURG, si_code=SI_TKILL, si_pid=2027851, si_uid=1000} --- +rt_sigreturn({mask=[]}) = 1 +sched_yield() = 0 +getpid() = 2027851 +futex(0xc0002cc4c8, FUTEX_WAKE_PRIVATE, 1) = 1 +uname({sysname="Linux", nodename="x1e", ...}) = 0 +epoll_pwait(3, [], 128, 0, NULL, 64) = 0 +futex(0xc0002cc4c8, FUTEX_WAKE_PRIVATE, 1) = 1 +--- SIGURG {si_signo=SIGURG, si_code=SI_TKILL, si_pid=2027851, si_uid=1000} --- +rt_sigreturn({mask=[]}) = 139777677138240 +mlock(0xc0004bf000, 4096) = 0 +futex(0x5339cb8, FUTEX_WAKE_PRIVATE, 1) = 1 +rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0 +mmap(NULL, 8392704, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f203c7f9000 +mprotect(0x7f203c7fa000, 8388608, PROT_READ|PROT_WRITE) = 0 +clone(child_stack=0x7f203cff8fb0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tid=[2027865], tls=0x7f203cff9700, child_tidptr=0x7f203cff99d0) = 2027865 +rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 +futex(0xc000839648, FUTEX_WAKE_PRIVATE, 1) = 1 +--- SIGURG {si_signo=SIGURG, si_code=SI_TKILL, si_pid=2027851, si_uid=1000} --- +rt_sigreturn({mask=[]}) = 1 +futex(0xc000839648, FUTEX_WAKE_PRIVATE, 1) = 1 +--- SIGURG {si_signo=SIGURG, si_code=SI_TKILL, si_pid=2027851, si_uid=1000} --- +rt_sigreturn({mask=[]}) = 1 +futex(0xc000839648, FUTEX_WAKE_PRIVATE, 1) = 1 +--- SIGURG {si_signo=SIGURG, si_code=SI_TKILL, si_pid=2027851, si_uid=1000} --- +rt_sigreturn({mask=[]}) = 1 +futex(0xc000839648, FUTEX_WAKE_PRIVATE, 1) = 1 +--- SIGURG {si_signo=SIGURG, si_code=SI_TKILL, si_pid=2027851, si_uid=1000} --- +rt_sigreturn({mask=[]}) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = -1 EAGAIN (Resource temporarily unavailable) +getrandom("\x4f\xbd\x21\x7d\xfc\xf6\x79\x05", 8, 0) = 8 +getrandom("\x90\x96\xdb\xa5\xb4\x59\x52\x5d\x3b\x50\x49\xef\xd8\x60\xdc\xb7", 16, 0) = 16 +futex(0xc000100148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000050bc8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000050bc8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000050bc8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000100148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000050bc8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000050bc8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000050bc8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000050bc8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000050bc8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000050bc8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000050bc8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000100148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000050bc8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000050bc8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000050bc8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000050bc8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000050bc8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000839648, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc000100148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000050bc8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000050bc8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x5339da8, FUTEX_WAIT_PRIVATE, 0, {tv_sec=0, tv_nsec=100000}) = 0 +epoll_pwait(3, [], 128, 0, NULL, 8) = 0 +futex(0x5339db8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x5339cb8, FUTEX_WAKE_PRIVATE, 1) = 0 +futex(0xc0005d0148, FUTEX_WAKE_PRIVATE, 1) = 1 +getpid() = 2027851 +tgkill(2027851, 2027859, SIGURG) = 0 +--- SIGURG {si_signo=SIGURG, si_code=SI_TKILL, si_pid=2027851, si_uid=1000} --- +rt_sigreturn({mask=[]}) = 0 +--- SIGURG {si_signo=SIGURG, si_code=SI_TKILL, si_pid=2027851, si_uid=1000} --- +rt_sigreturn({mask=[]}) = 0 +futex(0xc000050bc8, FUTEX_WAKE_PRIVATE, 1) = 1 +--- SIGURG {si_signo=SIGURG, si_code=SI_TKILL, si_pid=2027851, si_uid=1000} --- +rt_sigreturn({mask=[]}) = 0 +futex(0xc0002cc148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x5339dd0, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x5339cb8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc0006064c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000839648, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000839648, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000839648, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0002cc148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0005d0148, FUTEX_WAKE_PRIVATE, 1) = 1 +getrandom("\x17\x4c\x77\x89\x03\x8f\xc6\xbe\x46\x9c\xff\x54\x3f\xf5\xa9\x71", 16, 0) = 16 +write(1, "SYSCALLS !!!\n\n", 14) = 14 +umask(027) = 022 +uname({sysname="Linux", nodename="x1e", ...}) = 0 +getrandom("\x8e\xe2\xb5\x44\x67\x20\xc2\x61\xe5\x00\x23\xb1\x46\x24\xe0\x8f", 16, 0) = 16 +newfstatat(AT_FDCWD, ".", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0 +newfstatat(AT_FDCWD, "/home/andrewvc/golang/src/github.com/elastic/beats/x-pack/heartbeat", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0 +newfstatat(AT_FDCWD, "sample-synthetics-config/heartbeat.yml", {st_mode=S_IFREG|0644, st_size=1081, ...}, 0) = 0 +geteuid() = 1000 +openat(AT_FDCWD, "sample-synthetics-config/heartbeat.yml", O_RDONLY|O_CLOEXEC) = 6 +epoll_ctl(3, EPOLL_CTL_ADD, 6, {EPOLLIN|EPOLLOUT|EPOLLRDHUP|EPOLLET, {u32=1594020696, u64=139777009701720}}) = -1 EPERM (Operation not permitted) +epoll_ctl(3, EPOLL_CTL_DEL, 6, 0xc000724c34) = -1 EPERM (Operation not permitted) +fstat(6, {st_mode=S_IFREG|0644, st_size=1081, ...}) = 0 +read(6, "---\nheartbeat.config.monitors:\n "..., 1593) = 1081 +read(6, "", 512) = 0 +close(6) = 0 +futex(0xc0002cc148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0002cc148, FUTEX_WAKE_PRIVATE, 1) = 1 +newfstatat(AT_FDCWD, "/home/andrewvc/golang/src/github.com/elastic/beats/x-pack/heartbeat/data", {st_mode=S_IFDIR|0750, st_size=4096, ...}, 0) = 0 +openat(AT_FDCWD, "/home/andrewvc/golang/src/github.com/elastic/beats/x-pack/heartbeat/data/heartbeat.keystore", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +write(2, "2020-12-16T12:43:18.263-0600\tINF"..., 349) = 349 +openat(AT_FDCWD, "/home/andrewvc/golang/src/github.com/elastic/beats/x-pack/heartbeat/data/meta.json", O_RDONLY|O_CLOEXEC) = 6 +epoll_ctl(3, EPOLL_CTL_ADD, 6, {EPOLLIN|EPOLLOUT|EPOLLRDHUP|EPOLLET, {u32=1594020696, u64=139777009701720}}) = -1 EPERM (Operation not permitted) +epoll_ctl(3, EPOLL_CTL_DEL, 6, 0xc000724ddc) = -1 EPERM (Operation not permitted) +fstat(6, {st_mode=S_IFREG|0600, st_size=48, ...}) = 0 +read(6, "{\"uuid\":\"b61a418a-ea68-4e17-bf5f"..., 512) = 48 +close(6) = 0 +write(2, "2020-12-16T12:43:18.263-0600\tINF"..., 101) = 101 +futex(0xc000839648, FUTEX_WAKE_PRIVATE, 1) = 1 +openat(AT_FDCWD, "/proc/stat", O_RDONLY|O_CLOEXEC) = 6 +epoll_ctl(3, EPOLL_CTL_ADD, 6, {EPOLLIN|EPOLLOUT|EPOLLRDHUP|EPOLLET, {u32=1594020696, u64=139777009701720}}) = 0 +fcntl(6, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE) +fcntl(6, F_SETFL, O_RDONLY|O_NONBLOCK|O_LARGEFILE) = 0 +read(6, "cpu 7835827 2539869 3419734 303"..., 512) = 512 +read(6, "4 900 0 8210 0 0 0\ncpu9 654912 2"..., 1024) = 1024 +read(6, " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"..., 2048) = 2048 +read(6, " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"..., 4096) = 1719 +read(6, "", 2377) = 0 +epoll_ctl(3, EPOLL_CTL_DEL, 6, 0xc00072410c) = 0 +close(6) = 0 +uname({sysname="Linux", nodename="x1e", ...}) = 0 +openat(AT_FDCWD, "/proc/1/cgroup", O_RDONLY|O_CLOEXEC) = 6 +epoll_ctl(3, EPOLL_CTL_ADD, 6, {EPOLLIN|EPOLLOUT|EPOLLRDHUP|EPOLLET, {u32=1594020696, u64=139777009701720}}) = -1 EPERM (Operation not permitted) +epoll_ctl(3, EPOLL_CTL_DEL, 6, 0xc0007243d4) = -1 EPERM (Operation not permitted) +fstat(6, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 +read(6, "12:pids:/init.scope\n11:freezer:/"..., 512) = 233 +read(6, "", 1303) = 0 +close(6) = 0 +uname({sysname="Linux", nodename="x1e", ...}) = 0 +socket(AF_NETLINK, SOCK_RAW|SOCK_CLOEXEC, NETLINK_ROUTE) = 6 +bind(6, {sa_family=AF_NETLINK, nl_pid=0, nl_groups=00000000}, 12) = 0 +sendto(6, {{len=17, type=RTM_GETLINK, flags=NLM_F_REQUEST|NLM_F_DUMP, seq=1, pid=0}, {ifi_family=AF_UNSPEC, ...}}, 17, 0, {sa_family=AF_NETLINK, nl_pid=0, nl_groups=00000000}, 12) = 17 +recvfrom(6, [{{len=1316, type=RTM_NEWLINK, flags=NLM_F_MULTI, seq=1, pid=2027851}, {ifi_family=AF_UNSPEC, ifi_type=ARPHRD_LOOPBACK, ifi_index=if_nametoindex("lo"), ifi_flags=IFF_UP|IFF_LOOPBACK|IFF_RUNNING|IFF_LOWER_UP, ifi_change=0}, [{{nla_len=7, nla_type=IFLA_IFNAME}, "lo"}, {{nla_len=8, nla_type=IFLA_TXQLEN}, 1000}, {{nla_len=5, nla_type=IFLA_OPERSTATE}, 0}, {{nla_len=5, nla_type=IFLA_LINKMODE}, 0}, {{nla_len=8, nla_type=IFLA_MTU}, 65536}, {{nla_len=8, nla_type=IFLA_MIN_MTU}, 0}, {{nla_len=8, nla_type=IFLA_MAX_MTU}, 0}, {{nla_len=8, nla_type=IFLA_GROUP}, 0}, {{nla_len=8, nla_type=IFLA_PROMISCUITY}, 0}, {{nla_len=8, nla_type=IFLA_NUM_TX_QUEUES}, 1}, {{nla_len=8, nla_type=IFLA_GSO_MAX_SEGS}, 65535}, {{nla_len=8, nla_type=IFLA_GSO_MAX_SIZE}, 65536}, {{nla_len=8, nla_type=IFLA_NUM_RX_QUEUES}, 1}, {{nla_len=5, nla_type=IFLA_CARRIER}, 1}, {{nla_len=12, nla_type=IFLA_QDISC}, "noqueue"}, {{nla_len=8, nla_type=IFLA_CARRIER_CHANGES}, 0}, {{nla_len=5, nla_type=IFLA_PROTO_DOWN}, 0}, {{nla_len=8, nla_type=IFLA_CARRIER_UP_COUNT}, 0}, {{nla_len=8, nla_type=IFLA_CARRIER_DOWN_COUNT}, 0}, {{nla_len=36, nla_type=IFLA_MAP}, {mem_start=0, mem_end=0, base_addr=0, irq=0, dma=0, port=0}}, {{nla_len=10, nla_type=IFLA_ADDRESS}, "\x00\x00\x00\x00\x00\x00"}, {{nla_len=10, nla_type=IFLA_BROADCAST}, "\x00\x00\x00\x00\x00\x00"}, {{nla_len=196, nla_type=IFLA_STATS64}, {rx_packets=16438335, tx_packets=16438335, rx_bytes=5033814019, tx_bytes=5033814019, rx_errors=0, tx_errors=0, rx_dropped=0, tx_dropped=0, multicast=0, collisions=0, rx_length_errors=0, rx_over_errors=0, rx_crc_errors=0, rx_frame_errors=0, rx_fifo_errors=0, rx_missed_errors=0, tx_aborted_errors=0, tx_carrier_errors=0, tx_fifo_errors=0, tx_heartbeat_errors=0, tx_window_errors=0, rx_compressed=0, tx_compressed=0, rx_nohandler=0}}, {{nla_len=100, nla_type=IFLA_STATS}, {rx_packets=16438335, tx_packets=16438335, rx_bytes=738846723, tx_bytes=738846723, rx_errors=0, tx_errors=0, rx_dropped=0, tx_dropped=0, multicast=0, collisions=0, rx_length_errors=0, rx_over_errors=0, rx_crc_errors=0, rx_frame_errors=0, rx_fifo_errors=0, rx_missed_errors=0, tx_aborted_errors=0, tx_carrier_errors=0, tx_fifo_errors=0, tx_heartbeat_errors=0, tx_window_errors=0, rx_compressed=0, tx_compressed=0, rx_nohandler=0}}, {{nla_len=12, nla_type=IFLA_XDP}, {{nla_len=5, nla_type=IFLA_XDP_ATTACHED}, XDP_ATTACHED_NONE}}, {{nla_len=760, nla_type=IFLA_AF_SPEC}, [{{nla_len=136, nla_type=AF_INET}, {{nla_len=132, nla_type=IFLA_INET_CONF}, [[IPV4_DEVCONF_FORWARDING-1] = 1, [IPV4_DEVCONF_MC_FORWARDING-1] = 0, [IPV4_DEVCONF_PROXY_ARP-1] = 0, [IPV4_DEVCONF_ACCEPT_REDIRECTS-1] = 1, [IPV4_DEVCONF_SECURE_REDIRECTS-1] = 1, [IPV4_DEVCONF_SEND_REDIRECTS-1] = 1, [IPV4_DEVCONF_SHARED_MEDIA-1] = 1, [IPV4_DEVCONF_RP_FILTER-1] = 0, [IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE-1] = 1, [IPV4_DEVCONF_BOOTP_RELAY-1] = 0, [IPV4_DEVCONF_LOG_MARTIANS-1] = 0, [IPV4_DEVCONF_TAG-1] = 0, [IPV4_DEVCONF_ARPFILTER-1] = 0, [IPV4_DEVCONF_MEDIUM_ID-1] = 0, [IPV4_DEVCONF_NOXFRM-1] = 1, [IPV4_DEVCONF_NOPOLICY-1] = 1, [IPV4_DEVCONF_FORCE_IGMP_VERSION-1] = 0, [IPV4_DEVCONF_ARP_ANNOUNCE-1] = 0, [IPV4_DEVCONF_ARP_IGNORE-1] = 0, [IPV4_DEVCONF_PROMOTE_SECONDARIES-1] = 1, [IPV4_DEVCONF_ARP_ACCEPT-1] = 0, [IPV4_DEVCONF_ARP_NOTIFY-1] = 0, [IPV4_DEVCONF_ACCEPT_LOCAL-1] = 0, [IPV4_DEVCONF_SRC_VMARK-1] = 0, [IPV4_DEVCONF_PROXY_ARP_PVLAN-1] = 0, [IPV4_DEVCONF_ROUTE_LOCALNET-1] = 0, [IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL-1] = 10000, [IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL-1] = 1000, [IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN-1] = 0, [IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST-1] = 0, [IPV4_DEVCONF_DROP_GRATUITOUS_ARP-1] = 0, [IPV4_DEVCONF_BC_FORWARDING-1] = 0]}}, {{nla_len=620, nla_type=AF_INET6}, [{{nla_len=8, nla_type=IFLA_INET6_FLAGS}, IF_READY}, {{nla_len=20, nla_type=IFLA_INET6_CACHEINFO}, {max_reasm_len=65535, tstamp=2706, reachable_time=32744, retrans_time=1000}}, {{nla_len=208, nla_type=IFLA_INET6_CONF}, [[DEVCONF_FORWARDING] = 0, [DEVCONF_HOPLIMIT] = 64, [DEVCONF_MTU6] = 65536, [DEVCONF_ACCEPT_RA] = 1, [DEVCONF_ACCEPT_REDIRECTS] = 1, [DEVCONF_AUTOCONF] = 1, [DEVCONF_DAD_TRANSMITS] = 1, [DEVCONF_RTR_SOLICITS] = -1, [DEVCONF_RTR_SOLICIT_INTERVAL] = 4000, [DEVCONF_RTR_SOLICIT_DELAY] = 1000, [DEVCONF_USE_TEMPADDR] = -1, [DEVCONF_TEMP_VALID_LFT] = 604800, [DEVCONF_TEMP_PREFERED_LFT] = 86400, [DEVCONF_REGEN_MAX_RETRY] = 3, [DEVCONF_MAX_DESYNC_FACTOR] = 600, [DEVCONF_MAX_ADDRESSES] = 16, [DEVCONF_FORCE_MLD_VERSION] = 0, [DEVCONF_ACCEPT_RA_DEFRTR] = 1, [DEVCONF_ACCEPT_RA_PINFO] = 1, [DEVCONF_ACCEPT_RA_RTR_PREF] = 1, [DEVCONF_RTR_PROBE_INTERVAL] = 60000, [DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN] = 0, [DEVCONF_PROXY_NDP] = 0, [DEVCONF_OPTIMISTIC_DAD] = 0, [DEVCONF_ACCEPT_SOURCE_ROUTE] = 0, [DEVCONF_MC_FORWARDING] = 0, [DEVCONF_DISABLE_IPV6] = 0, [DEVCONF_ACCEPT_DAD] = -1, [DEVCONF_FORCE_TLLAO] = 0, [DEVCONF_NDISC_NOTIFY] = 0, [DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL] = 10000, [DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL] = 1000, ...]}, {{nla_len=300, nla_type=IFLA_INET6_STATS}, [[IPSTATS_MIB_NUM] = 37, [IPSTATS_MIB_INPKTS] = 2542, [IPSTATS_MIB_INOCTETS] = 177980, [IPSTATS_MIB_INDELIVERS] = 2542, [IPSTATS_MIB_OUTFORWDATAGRAMS] = 0, [IPSTATS_MIB_OUTPKTS] = 2542, [IPSTATS_MIB_OUTOCTETS] = 177980, [IPSTATS_MIB_INHDRERRORS] = 0, [IPSTATS_MIB_INTOOBIGERRORS] = 0, [IPSTATS_MIB_INNOROUTES] = 0, [IPSTATS_MIB_INADDRERRORS] = 0, [IPSTATS_MIB_INUNKNOWNPROTOS] = 0, [IPSTATS_MIB_INTRUNCATEDPKTS] = 0, [IPSTATS_MIB_INDISCARDS] = 0, [IPSTATS_MIB_OUTDISCARDS] = 0, [IPSTATS_MIB_OUTNOROUTES] = 0, [IPSTATS_MIB_REASMTIMEOUT] = 0, [IPSTATS_MIB_REASMREQDS] = 0, [IPSTATS_MIB_REASMOKS] = 0, [IPSTATS_MIB_REASMFAILS] = 0, [IPSTATS_MIB_FRAGOKS] = 0, [IPSTATS_MIB_FRAGFAILS] = 0, [IPSTATS_MIB_FRAGCREATES] = 0, [IPSTATS_MIB_INMCASTPKTS] = 0, [IPSTATS_MIB_OUTMCASTPKTS] = 2, [IPSTATS_MIB_INBCASTPKTS] = 0, [IPSTATS_MIB_OUTBCASTPKTS] = 0, [IPSTATS_MIB_INMCASTOCTETS] = 0, [IPSTATS_MIB_OUTMCASTOCTETS] = 152, [IPSTATS_MIB_INBCASTOCTETS] = 0, [IPSTATS_MIB_OUTBCASTOCTETS] = 0, [IPSTATS_MIB_CSUMERRORS] = 0, ...]}, {{nla_len=52, nla_type=IFLA_INET6_ICMP6STATS}, [[ICMP6_MIB_NUM] = 6, [ICMP6_MIB_INMSGS] = 2, [ICMP6_MIB_INERRORS] = 0, [ICMP6_MIB_OUTMSGS] = 2, [ICMP6_MIB_OUTERRORS] = 0, [ICMP6_MIB_CSUMERRORS] = 0]}, {{nla_len=20, nla_type=IFLA_INET6_TOKEN}, inet_pton(AF_INET6, "::")}, {{nla_len=5, nla_type=IFLA_INET6_ADDR_GEN_MODE}, IN6_ADDR_GEN_MODE_EUI64}]}]}]}, {{len=1328, type=RTM_NEWLINK, flags=NLM_F_MULTI, seq=1, pid=2027851}, {ifi_family=AF_UNSPEC, ifi_type=ARPHRD_ETHER, ifi_index=if_nametoindex("enp0s31f6"), ifi_flags=IFF_UP|IFF_BROADCAST|IFF_MULTICAST, ifi_change=0}, [{{nla_len=14, nla_type=IFLA_IFNAME}, "enp0s31f6"}, {{nla_len=8, nla_type=IFLA_TXQLEN}, 1000}, {{nla_len=5, nla_type=IFLA_OPERSTATE}, 2}, {{nla_len=5, nla_type=IFLA_LINKMODE}, 0}, {{nla_len=8, nla_type=IFLA_MTU}, 1500}, {{nla_len=8, nla_type=IFLA_MIN_MTU}, 68}, {{nla_len=8, nla_type=IFLA_MAX_MTU}, 9000}, {{nla_len=8, nla_type=IFLA_GROUP}, 0}, {{nla_len=8, nla_type=IFLA_PROMISCUITY}, 0}, {{nla_len=8, nla_type=IFLA_NUM_TX_QUEUES}, 1}, {{nla_len=8, nla_type=IFLA_GSO_MAX_SEGS}, 65535}, {{nla_len=8, nla_type=IFLA_GSO_MAX_SIZE}, 65536}, {{nla_len=8, nla_type=IFLA_NUM_RX_QUEUES}, 1}, {{nla_len=5, nla_type=IFLA_CARRIER}, 0}, {{nla_len=13, nla_type=IFLA_QDISC}, "fq_codel"}, {{nla_len=8, nla_type=IFLA_CARRIER_CHANGES}, 1}, {{nla_len=5, nla_type=IFLA_PROTO_DOWN}, 0}, {{nla_len=8, nla_type=IFLA_CARRIER_UP_COUNT}, 0}, {{nla_len=8, nla_type=IFLA_CARRIER_DOWN_COUNT}, 1}, {{nla_len=36, nla_type=IFLA_MAP}, {mem_start=0xc6600000, mem_end=0xc6620000, base_addr=0, irq=16, dma=0, port=0}}, {{nla_len=10, nla_type=IFLA_ADDRESS}, "\x48\x2a\xe3\x53\xeb\xb8"}, {{nla_len=10, nla_type=IFLA_BROADCAST}, "\xff\xff\xff\xff\xff\xff"}, {{nla_len=196, nla_type=IFLA_STATS64}, {rx_packets=0, tx_packets=0, rx_bytes=0, tx_bytes=0, rx_errors=0, tx_errors=0, rx_dropped=0, tx_dropped=0, multicast=0, collisions=0, rx_length_errors=0, rx_over_errors=0, rx_crc_errors=0, rx_frame_errors=0, rx_fifo_errors=0, rx_missed_errors=0, tx_aborted_errors=0, tx_carrier_errors=0, tx_fifo_errors=0, tx_heartbeat_errors=0, tx_window_errors=0, rx_compressed=0, tx_compressed=0, rx_nohandler=0}}, {{nla_len=100, nla_type=IFLA_STATS}, {rx_packets=0, tx_packets=0, rx_bytes=0, tx_bytes=0, rx_errors=0, tx_errors=0, rx_dropped=0, tx_dropped=0, multicast=0, collisions=0, rx_length_errors=0, rx_over_errors=0, rx_crc_errors=0, rx_frame_errors=0, rx_fifo_errors=0, rx_missed_errors=0, tx_aborted_errors=0, tx_carrier_errors=0, tx_fifo_errors=0, tx_heartbeat_errors=0, tx_window_errors=0, rx_compressed=0, tx_compressed=0, rx_nohandler=0}}, {{nla_len=12, nla_type=IFLA_XDP}, {{nla_len=5, nla_type=IFLA_XDP_ATTACHED}, XDP_ATTACHED_NONE}}, {{nla_len=760, nla_type=IFLA_AF_SPEC}, [{{nla_len=136, nla_type=AF_INET}, {{nla_len=132, nla_type=IFLA_INET_CONF}, [[IPV4_DEVCONF_FORWARDING-1] = 1, [IPV4_DEVCONF_MC_FORWARDING-1] = 0, [IPV4_DEVCONF_PROXY_ARP-1] = 0, [IPV4_DEVCONF_ACCEPT_REDIRECTS-1] = 1, [IPV4_DEVCONF_SECURE_REDIRECTS-1] = 1, [IPV4_DEVCONF_SEND_REDIRECTS-1] = 1, [IPV4_DEVCONF_SHARED_MEDIA-1] = 1, [IPV4_DEVCONF_RP_FILTER-1] = 2, [IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE-1] = 1, [IPV4_DEVCONF_BOOTP_RELAY-1] = 0, [IPV4_DEVCONF_LOG_MARTIANS-1] = 0, [IPV4_DEVCONF_TAG-1] = 0, [IPV4_DEVCONF_ARPFILTER-1] = 0, [IPV4_DEVCONF_MEDIUM_ID-1] = 0, [IPV4_DEVCONF_NOXFRM-1] = 0, [IPV4_DEVCONF_NOPOLICY-1] = 0, [IPV4_DEVCONF_FORCE_IGMP_VERSION-1] = 0, [IPV4_DEVCONF_ARP_ANNOUNCE-1] = 0, [IPV4_DEVCONF_ARP_IGNORE-1] = 0, [IPV4_DEVCONF_PROMOTE_SECONDARIES-1] = 1, [IPV4_DEVCONF_ARP_ACCEPT-1] = 0, [IPV4_DEVCONF_ARP_NOTIFY-1] = 0, [IPV4_DEVCONF_ACCEPT_LOCAL-1] = 0, [IPV4_DEVCONF_SRC_VMARK-1] = 0, [IPV4_DEVCONF_PROXY_ARP_PVLAN-1] = 0, [IPV4_DEVCONF_ROUTE_LOCALNET-1] = 0, [IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL-1] = 10000, [IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL-1] = 1000, [IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN-1] = 0, [IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST-1] = 0, [IPV4_DEVCONF_DROP_GRATUITOUS_ARP-1] = 0, [IPV4_DEVCONF_BC_FORWARDING-1] = 0]}}, {{nla_len=620, nla_type=AF_INET6}, [{{nla_len=8, nla_type=IFLA_INET6_FLAGS}, 0}, {{nla_len=20, nla_type=IFLA_INET6_CACHEINFO}, {max_reasm_len=65535, tstamp=14498880, reachable_time=41952, retrans_time=1000}}, {{nla_len=208, nla_type=IFLA_INET6_CONF}, [[DEVCONF_FORWARDING] = 0, [DEVCONF_HOPLIMIT] = 64, [DEVCONF_MTU6] = 1500, [DEVCONF_ACCEPT_RA] = 0, [DEVCONF_ACCEPT_REDIRECTS] = 1, [DEVCONF_AUTOCONF] = 1, [DEVCONF_DAD_TRANSMITS] = 1, [DEVCONF_RTR_SOLICITS] = -1, [DEVCONF_RTR_SOLICIT_INTERVAL] = 4000, [DEVCONF_RTR_SOLICIT_DELAY] = 1000, [DEVCONF_USE_TEMPADDR] = 0, [DEVCONF_TEMP_VALID_LFT] = 604800, [DEVCONF_TEMP_PREFERED_LFT] = 86400, [DEVCONF_REGEN_MAX_RETRY] = 3, [DEVCONF_MAX_DESYNC_FACTOR] = 600, [DEVCONF_MAX_ADDRESSES] = 16, [DEVCONF_FORCE_MLD_VERSION] = 0, [DEVCONF_ACCEPT_RA_DEFRTR] = 1, [DEVCONF_ACCEPT_RA_PINFO] = 1, [DEVCONF_ACCEPT_RA_RTR_PREF] = 1, [DEVCONF_RTR_PROBE_INTERVAL] = 60000, [DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN] = 0, [DEVCONF_PROXY_NDP] = 0, [DEVCONF_OPTIMISTIC_DAD] = 0, [DEVCONF_ACCEPT_SOURCE_ROUTE] = 0, [DEVCONF_MC_FORWARDING] = 0, [DEVCONF_DISABLE_IPV6] = 0, [DEVCONF_ACCEPT_DAD] = 1, [DEVCONF_FORCE_TLLAO] = 0, [DEVCONF_NDISC_NOTIFY] = 0, [DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL] = 10000, [DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL] = 1000, ...]}, {{nla_len=300, nla_type=IFLA_INET6_STATS}, [[IPSTATS_MIB_NUM] = 37, [IPSTATS_MIB_INPKTS] = 0, [IPSTATS_MIB_INOCTETS] = 0, [IPSTATS_MIB_INDELIVERS] = 0, [IPSTATS_MIB_OUTFORWDATAGRAMS] = 0, [IPSTATS_MIB_OUTPKTS] = 0, [IPSTATS_MIB_OUTOCTETS] = 0, [IPSTATS_MIB_INHDRERRORS] = 0, [IPSTATS_MIB_INTOOBIGERRORS] = 0, [IPSTATS_MIB_INNOROUTES] = 0, [IPSTATS_MIB_INADDRERRORS] = 0, [IPSTATS_MIB_INUNKNOWNPROTOS] = 0, [IPSTATS_MIB_INTRUNCATEDPKTS] = 0, [IPSTATS_MIB_INDISCARDS] = 0, [IPSTATS_MIB_OUTDISCARDS] = 0, [IPSTATS_MIB_OUTNOROUTES] = 0, [IPSTATS_MIB_REASMTIMEOUT] = 0, [IPSTATS_MIB_REASMREQDS] = 0, [IPSTATS_MIB_REASMOKS] = 0, [IPSTATS_MIB_REASMFAILS] = 0, [IPSTATS_MIB_FRAGOKS] = 0, [IPSTATS_MIB_FRAGFAILS] = 0, [IPSTATS_MIB_FRAGCREATES] = 0, [IPSTATS_MIB_INMCASTPKTS] = 0, [IPSTATS_MIB_OUTMCASTPKTS] = 0, [IPSTATS_MIB_INBCASTPKTS] = 0, [IPSTATS_MIB_OUTBCASTPKTS] = 0, [IPSTATS_MIB_INMCASTOCTETS] = 0, [IPSTATS_MIB_OUTMCASTOCTETS] = 0, [IPSTATS_MIB_INBCASTOCTETS] = 0, [IPSTATS_MIB_OUTBCASTOCTETS] = 0, [IPSTATS_MIB_CSUMERRORS] = 0, ...]}, {{nla_len=52, nla_type=IFLA_INET6_ICMP6STATS}, [[ICMP6_MIB_NUM] = 6, [ICMP6_MIB_INMSGS] = 0, [ICMP6_MIB_INERRORS] = 0, [ICMP6_MIB_OUTMSGS] = 0, [ICMP6_MIB_OUTERRORS] = 0, [ICMP6_MIB_CSUMERRORS] = 0]}, {{nla_len=20, nla_type=IFLA_INET6_TOKEN}, inet_pton(AF_INET6, "::")}, {{nla_len=5, nla_type=IFLA_INET6_ADDR_GEN_MODE}, IN6_ADDR_GEN_MODE_NONE}]}]}]}], 4096, 0, {sa_family=AF_NETLINK, nl_pid=0, nl_groups=00000000}, [112->12]) = 2644 +getsockname(6, {sa_family=AF_NETLINK, nl_pid=2027851, nl_groups=00000000}, [112->12]) = 0 +getsockname(6, {sa_family=AF_NETLINK, nl_pid=2027851, nl_groups=00000000}, [112->12]) = 0 +recvfrom(6, [{{len=1324, type=RTM_NEWLINK, flags=NLM_F_MULTI, seq=1, pid=2027851}, {ifi_family=AF_UNSPEC, ifi_type=ARPHRD_ETHER, ifi_index=if_nametoindex("wlp0s20f3"), ifi_flags=IFF_UP|IFF_BROADCAST|IFF_RUNNING|IFF_MULTICAST|IFF_LOWER_UP, ifi_change=0}, [{{nla_len=14, nla_type=IFLA_IFNAME}, "wlp0s20f3"}, {{nla_len=8, nla_type=IFLA_TXQLEN}, 1000}, {{nla_len=5, nla_type=IFLA_OPERSTATE}, 6}, {{nla_len=5, nla_type=IFLA_LINKMODE}, 1}, {{nla_len=8, nla_type=IFLA_MTU}, 1500}, {{nla_len=8, nla_type=IFLA_MIN_MTU}, 256}, {{nla_len=8, nla_type=IFLA_MAX_MTU}, 2304}, {{nla_len=8, nla_type=IFLA_GROUP}, 0}, {{nla_len=8, nla_type=IFLA_PROMISCUITY}, 0}, {{nla_len=8, nla_type=IFLA_NUM_TX_QUEUES}, 1}, {{nla_len=8, nla_type=IFLA_GSO_MAX_SEGS}, 65535}, {{nla_len=8, nla_type=IFLA_GSO_MAX_SIZE}, 65536}, {{nla_len=8, nla_type=IFLA_NUM_RX_QUEUES}, 1}, {{nla_len=5, nla_type=IFLA_CARRIER}, 1}, {{nla_len=12, nla_type=IFLA_QDISC}, "noqueue"}, {{nla_len=8, nla_type=IFLA_CARRIER_CHANGES}, 134}, {{nla_len=5, nla_type=IFLA_PROTO_DOWN}, 0}, {{nla_len=8, nla_type=IFLA_CARRIER_UP_COUNT}, 67}, {{nla_len=8, nla_type=IFLA_CARRIER_DOWN_COUNT}, 67}, {{nla_len=36, nla_type=IFLA_MAP}, {mem_start=0, mem_end=0, base_addr=0, irq=0, dma=0, port=0}}, {{nla_len=10, nla_type=IFLA_ADDRESS}, "\x24\xee\x9a\x7c\xa4\x75"}, {{nla_len=10, nla_type=IFLA_BROADCAST}, "\xff\xff\xff\xff\xff\xff"}, {{nla_len=196, nla_type=IFLA_STATS64}, {rx_packets=23696590, tx_packets=6908089, rx_bytes=29683312017, tx_bytes=2816500442, rx_errors=0, tx_errors=0, rx_dropped=0, tx_dropped=1, multicast=0, collisions=0, rx_length_errors=0, rx_over_errors=0, rx_crc_errors=0, rx_frame_errors=0, rx_fifo_errors=0, rx_missed_errors=0, tx_aborted_errors=0, tx_carrier_errors=0, tx_fifo_errors=0, tx_heartbeat_errors=0, tx_window_errors=0, rx_compressed=0, tx_compressed=0, rx_nohandler=0}}, {{nla_len=100, nla_type=IFLA_STATS}, {rx_packets=23696590, tx_packets=6908089, rx_bytes=3913508241, tx_bytes=2816500442, rx_errors=0, tx_errors=0, rx_dropped=0, tx_dropped=1, multicast=0, collisions=0, rx_length_errors=0, rx_over_errors=0, rx_crc_errors=0, rx_frame_errors=0, rx_fifo_errors=0, rx_missed_errors=0, tx_aborted_errors=0, tx_carrier_errors=0, tx_fifo_errors=0, tx_heartbeat_errors=0, tx_window_errors=0, rx_compressed=0, tx_compressed=0, rx_nohandler=0}}, {{nla_len=12, nla_type=IFLA_XDP}, {{nla_len=5, nla_type=IFLA_XDP_ATTACHED}, XDP_ATTACHED_NONE}}, {{nla_len=760, nla_type=IFLA_AF_SPEC}, [{{nla_len=136, nla_type=AF_INET}, {{nla_len=132, nla_type=IFLA_INET_CONF}, [[IPV4_DEVCONF_FORWARDING-1] = 1, [IPV4_DEVCONF_MC_FORWARDING-1] = 0, [IPV4_DEVCONF_PROXY_ARP-1] = 0, [IPV4_DEVCONF_ACCEPT_REDIRECTS-1] = 1, [IPV4_DEVCONF_SECURE_REDIRECTS-1] = 1, [IPV4_DEVCONF_SEND_REDIRECTS-1] = 1, [IPV4_DEVCONF_SHARED_MEDIA-1] = 1, [IPV4_DEVCONF_RP_FILTER-1] = 2, [IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE-1] = 1, [IPV4_DEVCONF_BOOTP_RELAY-1] = 0, [IPV4_DEVCONF_LOG_MARTIANS-1] = 0, [IPV4_DEVCONF_TAG-1] = 0, [IPV4_DEVCONF_ARPFILTER-1] = 0, [IPV4_DEVCONF_MEDIUM_ID-1] = 0, [IPV4_DEVCONF_NOXFRM-1] = 0, [IPV4_DEVCONF_NOPOLICY-1] = 0, [IPV4_DEVCONF_FORCE_IGMP_VERSION-1] = 0, [IPV4_DEVCONF_ARP_ANNOUNCE-1] = 0, [IPV4_DEVCONF_ARP_IGNORE-1] = 0, [IPV4_DEVCONF_PROMOTE_SECONDARIES-1] = 1, [IPV4_DEVCONF_ARP_ACCEPT-1] = 0, [IPV4_DEVCONF_ARP_NOTIFY-1] = 0, [IPV4_DEVCONF_ACCEPT_LOCAL-1] = 0, [IPV4_DEVCONF_SRC_VMARK-1] = 0, [IPV4_DEVCONF_PROXY_ARP_PVLAN-1] = 0, [IPV4_DEVCONF_ROUTE_LOCALNET-1] = 0, [IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL-1] = 10000, [IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL-1] = 1000, [IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN-1] = 0, [IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST-1] = 0, [IPV4_DEVCONF_DROP_GRATUITOUS_ARP-1] = 0, [IPV4_DEVCONF_BC_FORWARDING-1] = 0]}}, {{nla_len=620, nla_type=AF_INET6}, [{{nla_len=8, nla_type=IFLA_INET6_FLAGS}, IF_READY}, {{nla_len=20, nla_type=IFLA_INET6_CACHEINFO}, {max_reasm_len=65535, tstamp=14499256, reachable_time=36048, retrans_time=1000}}, {{nla_len=208, nla_type=IFLA_INET6_CONF}, [[DEVCONF_FORWARDING] = 0, [DEVCONF_HOPLIMIT] = 64, [DEVCONF_MTU6] = 1500, [DEVCONF_ACCEPT_RA] = 0, [DEVCONF_ACCEPT_REDIRECTS] = 1, [DEVCONF_AUTOCONF] = 1, [DEVCONF_DAD_TRANSMITS] = 1, [DEVCONF_RTR_SOLICITS] = -1, [DEVCONF_RTR_SOLICIT_INTERVAL] = 4000, [DEVCONF_RTR_SOLICIT_DELAY] = 1000, [DEVCONF_USE_TEMPADDR] = 2, [DEVCONF_TEMP_VALID_LFT] = 604800, [DEVCONF_TEMP_PREFERED_LFT] = 86400, [DEVCONF_REGEN_MAX_RETRY] = 3, [DEVCONF_MAX_DESYNC_FACTOR] = 600, [DEVCONF_MAX_ADDRESSES] = 16, [DEVCONF_FORCE_MLD_VERSION] = 0, [DEVCONF_ACCEPT_RA_DEFRTR] = 1, [DEVCONF_ACCEPT_RA_PINFO] = 1, [DEVCONF_ACCEPT_RA_RTR_PREF] = 1, [DEVCONF_RTR_PROBE_INTERVAL] = 60000, [DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN] = 0, [DEVCONF_PROXY_NDP] = 0, [DEVCONF_OPTIMISTIC_DAD] = 0, [DEVCONF_ACCEPT_SOURCE_ROUTE] = 0, [DEVCONF_MC_FORWARDING] = 0, [DEVCONF_DISABLE_IPV6] = 0, [DEVCONF_ACCEPT_DAD] = 1, [DEVCONF_FORCE_TLLAO] = 0, [DEVCONF_NDISC_NOTIFY] = 0, [DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL] = 10000, [DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL] = 1000, ...]}, {{nla_len=300, nla_type=IFLA_INET6_STATS}, [[IPSTATS_MIB_NUM] = 37, [IPSTATS_MIB_INPKTS] = 3442, [IPSTATS_MIB_INOCTETS] = 677046, [IPSTATS_MIB_INDELIVERS] = 3442, [IPSTATS_MIB_OUTFORWDATAGRAMS] = 0, [IPSTATS_MIB_OUTPKTS] = 412, [IPSTATS_MIB_OUTOCTETS] = 43168, [IPSTATS_MIB_INHDRERRORS] = 0, [IPSTATS_MIB_INTOOBIGERRORS] = 0, [IPSTATS_MIB_INNOROUTES] = 0, [IPSTATS_MIB_INADDRERRORS] = 0, [IPSTATS_MIB_INUNKNOWNPROTOS] = 0, [IPSTATS_MIB_INTRUNCATEDPKTS] = 0, [IPSTATS_MIB_INDISCARDS] = 0, [IPSTATS_MIB_OUTDISCARDS] = 1, [IPSTATS_MIB_OUTNOROUTES] = 0, [IPSTATS_MIB_REASMTIMEOUT] = 0, [IPSTATS_MIB_REASMREQDS] = 0, [IPSTATS_MIB_REASMOKS] = 0, [IPSTATS_MIB_REASMFAILS] = 0, [IPSTATS_MIB_FRAGOKS] = 0, [IPSTATS_MIB_FRAGFAILS] = 0, [IPSTATS_MIB_FRAGCREATES] = 0, [IPSTATS_MIB_INMCASTPKTS] = 3442, [IPSTATS_MIB_OUTMCASTPKTS] = 412, [IPSTATS_MIB_INBCASTPKTS] = 0, [IPSTATS_MIB_OUTBCASTPKTS] = 0, [IPSTATS_MIB_INMCASTOCTETS] = 677046, [IPSTATS_MIB_OUTMCASTOCTETS] = 43168, [IPSTATS_MIB_INBCASTOCTETS] = 0, [IPSTATS_MIB_OUTBCASTOCTETS] = 0, [IPSTATS_MIB_CSUMERRORS] = 0, ...]}, {{nla_len=52, nla_type=IFLA_INET6_ICMP6STATS}, [[ICMP6_MIB_NUM] = 6, [ICMP6_MIB_INMSGS] = 0, [ICMP6_MIB_INERRORS] = 0, [ICMP6_MIB_OUTMSGS] = 150, [ICMP6_MIB_OUTERRORS] = 0, [ICMP6_MIB_CSUMERRORS] = 0]}, {{nla_len=20, nla_type=IFLA_INET6_TOKEN}, inet_pton(AF_INET6, "::")}, {{nla_len=5, nla_type=IFLA_INET6_ADDR_GEN_MODE}, IN6_ADDR_GEN_MODE_NONE}]}]}]}, {{len=1748, type=RTM_NEWLINK, flags=NLM_F_MULTI, seq=1, pid=2027851}, {ifi_family=AF_UNSPEC, ifi_type=ARPHRD_ETHER, ifi_index=if_nametoindex("docker0"), ifi_flags=IFF_UP|IFF_BROADCAST|IFF_MULTICAST, ifi_change=0}, [{{nla_len=12, nla_type=IFLA_IFNAME}, "docker0"}, {{nla_len=8, nla_type=IFLA_TXQLEN}, 0}, {{nla_len=5, nla_type=IFLA_OPERSTATE}, 2}, {{nla_len=5, nla_type=IFLA_LINKMODE}, 0}, {{nla_len=8, nla_type=IFLA_MTU}, 1500}, {{nla_len=8, nla_type=IFLA_MIN_MTU}, 68}, {{nla_len=8, nla_type=IFLA_MAX_MTU}, 65535}, {{nla_len=8, nla_type=IFLA_GROUP}, 0}, {{nla_len=8, nla_type=IFLA_PROMISCUITY}, 0}, {{nla_len=8, nla_type=IFLA_NUM_TX_QUEUES}, 1}, {{nla_len=8, nla_type=IFLA_GSO_MAX_SEGS}, 65535}, {{nla_len=8, nla_type=IFLA_GSO_MAX_SIZE}, 65536}, {{nla_len=8, nla_type=IFLA_NUM_RX_QUEUES}, 1}, {{nla_len=5, nla_type=IFLA_CARRIER}, 0}, {{nla_len=12, nla_type=IFLA_QDISC}, "noqueue"}, {{nla_len=8, nla_type=IFLA_CARRIER_CHANGES}, 15}, {{nla_len=5, nla_type=IFLA_PROTO_DOWN}, 0}, {{nla_len=8, nla_type=IFLA_CARRIER_UP_COUNT}, 7}, {{nla_len=8, nla_type=IFLA_CARRIER_DOWN_COUNT}, 8}, {{nla_len=36, nla_type=IFLA_MAP}, {mem_start=0, mem_end=0, base_addr=0, irq=0, dma=0, port=0}}, {{nla_len=10, nla_type=IFLA_ADDRESS}, "\x02\x42\xf6\x12\xeb\x56"}, {{nla_len=10, nla_type=IFLA_BROADCAST}, "\xff\xff\xff\xff\xff\xff"}, {{nla_len=196, nla_type=IFLA_STATS64}, {rx_packets=1417, tx_packets=1711, rx_bytes=105610, tx_bytes=18981135, rx_errors=0, tx_errors=0, rx_dropped=0, tx_dropped=0, multicast=0, collisions=0, rx_length_errors=0, rx_over_errors=0, rx_crc_errors=0, rx_frame_errors=0, rx_fifo_errors=0, rx_missed_errors=0, tx_aborted_errors=0, tx_carrier_errors=0, tx_fifo_errors=0, tx_heartbeat_errors=0, tx_window_errors=0, rx_compressed=0, tx_compressed=0, rx_nohandler=0}}, {{nla_len=100, nla_type=IFLA_STATS}, {rx_packets=1417, tx_packets=1711, rx_bytes=105610, tx_bytes=18981135, rx_errors=0, tx_errors=0, rx_dropped=0, tx_dropped=0, multicast=0, collisions=0, rx_length_errors=0, rx_over_errors=0, rx_crc_errors=0, rx_frame_errors=0, rx_fifo_errors=0, rx_missed_errors=0, tx_aborted_errors=0, tx_carrier_errors=0, tx_fifo_errors=0, tx_heartbeat_errors=0, tx_window_errors=0, rx_compressed=0, tx_compressed=0, rx_nohandler=0}}, {{nla_len=12, nla_type=IFLA_XDP}, {{nla_len=5, nla_type=IFLA_XDP_ATTACHED}, XDP_ATTACHED_NONE}}, {{nla_len=428, nla_type=IFLA_LINKINFO}, [{{nla_len=11, nla_type=IFLA_INFO_KIND}, "bridge"}, {{nla_len=412, nla_type=IFLA_INFO_DATA}, [{{nla_len=12, nla_type=IFLA_BR_HELLO_TIMER}, 0}, {{nla_len=12, nla_type=IFLA_BR_TCN_TIMER}, 0}, {{nla_len=12, nla_type=IFLA_BR_TOPOLOGY_CHANGE_TIMER}, 0}, {{nla_len=12, nla_type=IFLA_BR_GC_TIMER}, 23256}, {{nla_len=8, nla_type=IFLA_BR_FORWARD_DELAY}, 1500}, {{nla_len=8, nla_type=IFLA_BR_HELLO_TIME}, 200}, {{nla_len=8, nla_type=IFLA_BR_MAX_AGE}, 2000}, {{nla_len=8, nla_type=IFLA_BR_AGEING_TIME}, 30000}, {{nla_len=8, nla_type=IFLA_BR_STP_STATE}, 0}, {{nla_len=6, nla_type=IFLA_BR_PRIORITY}, 32768}, {{nla_len=5, nla_type=IFLA_BR_VLAN_FILTERING}, 0}, {{nla_len=6, nla_type=IFLA_BR_GROUP_FWD_MASK}, 0}, {{nla_len=12, nla_type=IFLA_BR_BRIDGE_ID}, {prio=[128, 0], addr=02:42:f6:12:eb:56}}, {{nla_len=12, nla_type=IFLA_BR_ROOT_ID}, {prio=[128, 0], addr=02:42:f6:12:eb:56}}, {{nla_len=6, nla_type=IFLA_BR_ROOT_PORT}, 0}, {{nla_len=8, nla_type=IFLA_BR_ROOT_PATH_COST}, 0}, {{nla_len=5, nla_type=IFLA_BR_TOPOLOGY_CHANGE}, 0}, {{nla_len=5, nla_type=IFLA_BR_TOPOLOGY_CHANGE_DETECTED}, 0}, {{nla_len=10, nla_type=IFLA_BR_GROUP_ADDR}, "\x01\x80\xc2\x00\x00\x00"}, {{nla_len=12, nla_type=IFLA_BR_MULTI_BOOLOPT}, "\x00\x00\x00\x00\x01\x00\x00\x00"}, {{nla_len=6, nla_type=IFLA_BR_VLAN_PROTOCOL}, htons(ETH_P_8021Q)}, {{nla_len=6, nla_type=IFLA_BR_VLAN_DEFAULT_PVID}, 1}, {{nla_len=5, nla_type=IFLA_BR_VLAN_STATS_ENABLED}, 0}, {{nla_len=5, nla_type=IFLA_BR_VLAN_STATS_PER_PORT}, 0}, {{nla_len=5, nla_type=IFLA_BR_MCAST_ROUTER}, 1}, {{nla_len=5, nla_type=IFLA_BR_MCAST_SNOOPING}, 1}, {{nla_len=5, nla_type=IFLA_BR_MCAST_QUERY_USE_IFADDR}, 0}, {{nla_len=5, nla_type=IFLA_BR_MCAST_QUERIER}, 0}, {{nla_len=5, nla_type=IFLA_BR_MCAST_STATS_ENABLED}, 0}, {{nla_len=8, nla_type=IFLA_BR_MCAST_HASH_ELASTICITY}, 16}, {{nla_len=8, nla_type=IFLA_BR_MCAST_HASH_MAX}, 4096}, {{nla_len=8, nla_type=IFLA_BR_MCAST_LAST_MEMBER_CNT}, 2}, ...]}]}, {{nla_len=760, nla_type=IFLA_AF_SPEC}, [{{nla_len=136, nla_type=AF_INET}, {{nla_len=132, nla_type=IFLA_INET_CONF}, [[IPV4_DEVCONF_FORWARDING-1] = 1, [IPV4_DEVCONF_MC_FORWARDING-1] = 0, [IPV4_DEVCONF_PROXY_ARP-1] = 0, [IPV4_DEVCONF_ACCEPT_REDIRECTS-1] = 1, [IPV4_DEVCONF_SECURE_REDIRECTS-1] = 1, [IPV4_DEVCONF_SEND_REDIRECTS-1] = 1, [IPV4_DEVCONF_SHARED_MEDIA-1] = 1, [IPV4_DEVCONF_RP_FILTER-1] = 2, [IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE-1] = 1, [IPV4_DEVCONF_BOOTP_RELAY-1] = 0, [IPV4_DEVCONF_LOG_MARTIANS-1] = 0, [IPV4_DEVCONF_TAG-1] = 0, [IPV4_DEVCONF_ARPFILTER-1] = 0, [IPV4_DEVCONF_MEDIUM_ID-1] = 0, [IPV4_DEVCONF_NOXFRM-1] = 0, [IPV4_DEVCONF_NOPOLICY-1] = 0, [IPV4_DEVCONF_FORCE_IGMP_VERSION-1] = 0, [IPV4_DEVCONF_ARP_ANNOUNCE-1] = 0, [IPV4_DEVCONF_ARP_IGNORE-1] = 0, [IPV4_DEVCONF_PROMOTE_SECONDARIES-1] = 1, [IPV4_DEVCONF_ARP_ACCEPT-1] = 0, [IPV4_DEVCONF_ARP_NOTIFY-1] = 0, [IPV4_DEVCONF_ACCEPT_LOCAL-1] = 0, [IPV4_DEVCONF_SRC_VMARK-1] = 0, [IPV4_DEVCONF_PROXY_ARP_PVLAN-1] = 0, [IPV4_DEVCONF_ROUTE_LOCALNET-1] = 0, [IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL-1] = 10000, [IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL-1] = 1000, [IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN-1] = 0, [IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST-1] = 0, [IPV4_DEVCONF_DROP_GRATUITOUS_ARP-1] = 0, [IPV4_DEVCONF_BC_FORWARDING-1] = 0]}}, {{nla_len=620, nla_type=AF_INET6}, [{{nla_len=8, nla_type=IFLA_INET6_FLAGS}, IF_RS_SENT|IF_READY}, {{nla_len=20, nla_type=IFLA_INET6_CACHEINFO}, {max_reasm_len=65535, tstamp=413544, reachable_time=36516, retrans_time=1000}}, {{nla_len=208, nla_type=IFLA_INET6_CONF}, [[DEVCONF_FORWARDING] = 0, [DEVCONF_HOPLIMIT] = 64, [DEVCONF_MTU6] = 1500, [DEVCONF_ACCEPT_RA] = 1, [DEVCONF_ACCEPT_REDIRECTS] = 1, [DEVCONF_AUTOCONF] = 1, [DEVCONF_DAD_TRANSMITS] = 1, [DEVCONF_RTR_SOLICITS] = -1, [DEVCONF_RTR_SOLICIT_INTERVAL] = 4000, [DEVCONF_RTR_SOLICIT_DELAY] = 1000, [DEVCONF_USE_TEMPADDR] = 2, [DEVCONF_TEMP_VALID_LFT] = 604800, [DEVCONF_TEMP_PREFERED_LFT] = 86400, [DEVCONF_REGEN_MAX_RETRY] = 3, [DEVCONF_MAX_DESYNC_FACTOR] = 600, [DEVCONF_MAX_ADDRESSES] = 16, [DEVCONF_FORCE_MLD_VERSION] = 0, [DEVCONF_ACCEPT_RA_DEFRTR] = 1, [DEVCONF_ACCEPT_RA_PINFO] = 1, [DEVCONF_ACCEPT_RA_RTR_PREF] = 1, [DEVCONF_RTR_PROBE_INTERVAL] = 60000, [DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN] = 0, [DEVCONF_PROXY_NDP] = 0, [DEVCONF_OPTIMISTIC_DAD] = 0, [DEVCONF_ACCEPT_SOURCE_ROUTE] = 0, [DEVCONF_MC_FORWARDING] = 0, [DEVCONF_DISABLE_IPV6] = 0, [DEVCONF_ACCEPT_DAD] = 1, [DEVCONF_FORCE_TLLAO] = 0, [DEVCONF_NDISC_NOTIFY] = 0, [DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL] = 10000, [DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL] = 1000, ...]}, {{nla_len=300, nla_type=IFLA_INET6_STATS}, [[IPSTATS_MIB_NUM] = 37, [IPSTATS_MIB_INPKTS] = 99, [IPSTATS_MIB_INOCTETS] = 15738, [IPSTATS_MIB_INDELIVERS] = 99, [IPSTATS_MIB_OUTFORWDATAGRAMS] = 0, [IPSTATS_MIB_OUTPKTS] = 167, [IPSTATS_MIB_OUTOCTETS] = 20382, [IPSTATS_MIB_INHDRERRORS] = 0, [IPSTATS_MIB_INTOOBIGERRORS] = 0, [IPSTATS_MIB_INNOROUTES] = 0, [IPSTATS_MIB_INADDRERRORS] = 0, [IPSTATS_MIB_INUNKNOWNPROTOS] = 0, [IPSTATS_MIB_INTRUNCATEDPKTS] = 0, [IPSTATS_MIB_INDISCARDS] = 0, [IPSTATS_MIB_OUTDISCARDS] = 0, [IPSTATS_MIB_OUTNOROUTES] = 0, [IPSTATS_MIB_REASMTIMEOUT] = 0, [IPSTATS_MIB_REASMREQDS] = 0, [IPSTATS_MIB_REASMOKS] = 0, [IPSTATS_MIB_REASMFAILS] = 0, [IPSTATS_MIB_FRAGOKS] = 0, [IPSTATS_MIB_FRAGFAILS] = 0, [IPSTATS_MIB_FRAGCREATES] = 0, [IPSTATS_MIB_INMCASTPKTS] = 99, [IPSTATS_MIB_OUTMCASTPKTS] = 167, [IPSTATS_MIB_INBCASTPKTS] = 0, [IPSTATS_MIB_OUTBCASTPKTS] = 0, [IPSTATS_MIB_INMCASTOCTETS] = 15738, [IPSTATS_MIB_OUTMCASTOCTETS] = 20382, [IPSTATS_MIB_INBCASTOCTETS] = 0, [IPSTATS_MIB_OUTBCASTOCTETS] = 0, [IPSTATS_MIB_CSUMERRORS] = 0, ...]}, {{nla_len=52, nla_type=IFLA_INET6_ICMP6STATS}, [[ICMP6_MIB_NUM] = 6, [ICMP6_MIB_INMSGS] = 0, [ICMP6_MIB_INERRORS] = 0, [ICMP6_MIB_OUTMSGS] = 68, [ICMP6_MIB_OUTERRORS] = 0, [ICMP6_MIB_CSUMERRORS] = 0]}, {{nla_len=20, nla_type=IFLA_INET6_TOKEN}, inet_pton(AF_INET6, "::")}, {{nla_len=5, nla_type=IFLA_INET6_ADDR_GEN_MODE}, IN6_ADDR_GEN_MODE_EUI64}]}]}]}], 4096, 0, {sa_family=AF_NETLINK, nl_pid=0, nl_groups=00000000}, [112->12]) = 3072 +getsockname(6, {sa_family=AF_NETLINK, nl_pid=2027851, nl_groups=00000000}, [112->12]) = 0 +getsockname(6, {sa_family=AF_NETLINK, nl_pid=2027851, nl_groups=00000000}, [112->12]) = 0 +recvfrom(6, [{{len=1756, type=RTM_NEWLINK, flags=NLM_F_MULTI, seq=1, pid=2027851}, {ifi_family=AF_UNSPEC, ifi_type=ARPHRD_ETHER, ifi_index=if_nametoindex("br-1c5c7e65bef1"), ifi_flags=IFF_UP|IFF_BROADCAST|IFF_MULTICAST, ifi_change=0}, [{{nla_len=20, nla_type=IFLA_IFNAME}, "br-1c5c7e65bef1"}, {{nla_len=8, nla_type=IFLA_TXQLEN}, 0}, {{nla_len=5, nla_type=IFLA_OPERSTATE}, 2}, {{nla_len=5, nla_type=IFLA_LINKMODE}, 0}, {{nla_len=8, nla_type=IFLA_MTU}, 1500}, {{nla_len=8, nla_type=IFLA_MIN_MTU}, 68}, {{nla_len=8, nla_type=IFLA_MAX_MTU}, 65535}, {{nla_len=8, nla_type=IFLA_GROUP}, 0}, {{nla_len=8, nla_type=IFLA_PROMISCUITY}, 0}, {{nla_len=8, nla_type=IFLA_NUM_TX_QUEUES}, 1}, {{nla_len=8, nla_type=IFLA_GSO_MAX_SEGS}, 65535}, {{nla_len=8, nla_type=IFLA_GSO_MAX_SIZE}, 65536}, {{nla_len=8, nla_type=IFLA_NUM_RX_QUEUES}, 1}, {{nla_len=5, nla_type=IFLA_CARRIER}, 0}, {{nla_len=12, nla_type=IFLA_QDISC}, "noqueue"}, {{nla_len=8, nla_type=IFLA_CARRIER_CHANGES}, 9}, {{nla_len=5, nla_type=IFLA_PROTO_DOWN}, 0}, {{nla_len=8, nla_type=IFLA_CARRIER_UP_COUNT}, 4}, {{nla_len=8, nla_type=IFLA_CARRIER_DOWN_COUNT}, 5}, {{nla_len=36, nla_type=IFLA_MAP}, {mem_start=0, mem_end=0, base_addr=0, irq=0, dma=0, port=0}}, {{nla_len=10, nla_type=IFLA_ADDRESS}, "\x02\x42\x42\xf3\xe2\x5a"}, {{nla_len=10, nla_type=IFLA_BROADCAST}, "\xff\xff\xff\xff\xff\xff"}, {{nla_len=196, nla_type=IFLA_STATS64}, {rx_packets=659, tx_packets=935, rx_bytes=79370, tx_bytes=6601624, rx_errors=0, tx_errors=0, rx_dropped=0, tx_dropped=0, multicast=0, collisions=0, rx_length_errors=0, rx_over_errors=0, rx_crc_errors=0, rx_frame_errors=0, rx_fifo_errors=0, rx_missed_errors=0, tx_aborted_errors=0, tx_carrier_errors=0, tx_fifo_errors=0, tx_heartbeat_errors=0, tx_window_errors=0, rx_compressed=0, tx_compressed=0, rx_nohandler=0}}, {{nla_len=100, nla_type=IFLA_STATS}, {rx_packets=659, tx_packets=935, rx_bytes=79370, tx_bytes=6601624, rx_errors=0, tx_errors=0, rx_dropped=0, tx_dropped=0, multicast=0, collisions=0, rx_length_errors=0, rx_over_errors=0, rx_crc_errors=0, rx_frame_errors=0, rx_fifo_errors=0, rx_missed_errors=0, tx_aborted_errors=0, tx_carrier_errors=0, tx_fifo_errors=0, tx_heartbeat_errors=0, tx_window_errors=0, rx_compressed=0, tx_compressed=0, rx_nohandler=0}}, {{nla_len=12, nla_type=IFLA_XDP}, {{nla_len=5, nla_type=IFLA_XDP_ATTACHED}, XDP_ATTACHED_NONE}}, {{nla_len=428, nla_type=IFLA_LINKINFO}, [{{nla_len=11, nla_type=IFLA_INFO_KIND}, "bridge"}, {{nla_len=412, nla_type=IFLA_INFO_DATA}, [{{nla_len=12, nla_type=IFLA_BR_HELLO_TIMER}, 0}, {{nla_len=12, nla_type=IFLA_BR_TCN_TIMER}, 0}, {{nla_len=12, nla_type=IFLA_BR_TOPOLOGY_CHANGE_TIMER}, 0}, {{nla_len=12, nla_type=IFLA_BR_GC_TIMER}, 29810}, {{nla_len=8, nla_type=IFLA_BR_FORWARD_DELAY}, 1500}, {{nla_len=8, nla_type=IFLA_BR_HELLO_TIME}, 200}, {{nla_len=8, nla_type=IFLA_BR_MAX_AGE}, 2000}, {{nla_len=8, nla_type=IFLA_BR_AGEING_TIME}, 30000}, {{nla_len=8, nla_type=IFLA_BR_STP_STATE}, 0}, {{nla_len=6, nla_type=IFLA_BR_PRIORITY}, 32768}, {{nla_len=5, nla_type=IFLA_BR_VLAN_FILTERING}, 0}, {{nla_len=6, nla_type=IFLA_BR_GROUP_FWD_MASK}, 0}, {{nla_len=12, nla_type=IFLA_BR_BRIDGE_ID}, {prio=[128, 0], addr=02:42:42:f3:e2:5a}}, {{nla_len=12, nla_type=IFLA_BR_ROOT_ID}, {prio=[128, 0], addr=02:42:42:f3:e2:5a}}, {{nla_len=6, nla_type=IFLA_BR_ROOT_PORT}, 0}, {{nla_len=8, nla_type=IFLA_BR_ROOT_PATH_COST}, 0}, {{nla_len=5, nla_type=IFLA_BR_TOPOLOGY_CHANGE}, 0}, {{nla_len=5, nla_type=IFLA_BR_TOPOLOGY_CHANGE_DETECTED}, 0}, {{nla_len=10, nla_type=IFLA_BR_GROUP_ADDR}, "\x01\x80\xc2\x00\x00\x00"}, {{nla_len=12, nla_type=IFLA_BR_MULTI_BOOLOPT}, "\x00\x00\x00\x00\x01\x00\x00\x00"}, {{nla_len=6, nla_type=IFLA_BR_VLAN_PROTOCOL}, htons(ETH_P_8021Q)}, {{nla_len=6, nla_type=IFLA_BR_VLAN_DEFAULT_PVID}, 1}, {{nla_len=5, nla_type=IFLA_BR_VLAN_STATS_ENABLED}, 0}, {{nla_len=5, nla_type=IFLA_BR_VLAN_STATS_PER_PORT}, 0}, {{nla_len=5, nla_type=IFLA_BR_MCAST_ROUTER}, 1}, {{nla_len=5, nla_type=IFLA_BR_MCAST_SNOOPING}, 1}, {{nla_len=5, nla_type=IFLA_BR_MCAST_QUERY_USE_IFADDR}, 0}, {{nla_len=5, nla_type=IFLA_BR_MCAST_QUERIER}, 0}, {{nla_len=5, nla_type=IFLA_BR_MCAST_STATS_ENABLED}, 0}, {{nla_len=8, nla_type=IFLA_BR_MCAST_HASH_ELASTICITY}, 16}, {{nla_len=8, nla_type=IFLA_BR_MCAST_HASH_MAX}, 4096}, {{nla_len=8, nla_type=IFLA_BR_MCAST_LAST_MEMBER_CNT}, 2}, ...]}]}, {{nla_len=760, nla_type=IFLA_AF_SPEC}, [{{nla_len=136, nla_type=AF_INET}, {{nla_len=132, nla_type=IFLA_INET_CONF}, [[IPV4_DEVCONF_FORWARDING-1] = 1, [IPV4_DEVCONF_MC_FORWARDING-1] = 0, [IPV4_DEVCONF_PROXY_ARP-1] = 0, [IPV4_DEVCONF_ACCEPT_REDIRECTS-1] = 1, [IPV4_DEVCONF_SECURE_REDIRECTS-1] = 1, [IPV4_DEVCONF_SEND_REDIRECTS-1] = 1, [IPV4_DEVCONF_SHARED_MEDIA-1] = 1, [IPV4_DEVCONF_RP_FILTER-1] = 2, [IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE-1] = 1, [IPV4_DEVCONF_BOOTP_RELAY-1] = 0, [IPV4_DEVCONF_LOG_MARTIANS-1] = 0, [IPV4_DEVCONF_TAG-1] = 0, [IPV4_DEVCONF_ARPFILTER-1] = 0, [IPV4_DEVCONF_MEDIUM_ID-1] = 0, [IPV4_DEVCONF_NOXFRM-1] = 0, [IPV4_DEVCONF_NOPOLICY-1] = 0, [IPV4_DEVCONF_FORCE_IGMP_VERSION-1] = 0, [IPV4_DEVCONF_ARP_ANNOUNCE-1] = 0, [IPV4_DEVCONF_ARP_IGNORE-1] = 0, [IPV4_DEVCONF_PROMOTE_SECONDARIES-1] = 1, [IPV4_DEVCONF_ARP_ACCEPT-1] = 0, [IPV4_DEVCONF_ARP_NOTIFY-1] = 0, [IPV4_DEVCONF_ACCEPT_LOCAL-1] = 0, [IPV4_DEVCONF_SRC_VMARK-1] = 0, [IPV4_DEVCONF_PROXY_ARP_PVLAN-1] = 0, [IPV4_DEVCONF_ROUTE_LOCALNET-1] = 0, [IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL-1] = 10000, [IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL-1] = 1000, [IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN-1] = 0, [IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST-1] = 0, [IPV4_DEVCONF_DROP_GRATUITOUS_ARP-1] = 0, [IPV4_DEVCONF_BC_FORWARDING-1] = 0]}}, {{nla_len=620, nla_type=AF_INET6}, [{{nla_len=8, nla_type=IFLA_INET6_FLAGS}, IF_RS_SENT|IF_READY}, {{nla_len=20, nla_type=IFLA_INET6_CACHEINFO}, {max_reasm_len=65535, tstamp=418691, reachable_time=27156, retrans_time=1000}}, {{nla_len=208, nla_type=IFLA_INET6_CONF}, [[DEVCONF_FORWARDING] = 0, [DEVCONF_HOPLIMIT] = 64, [DEVCONF_MTU6] = 1500, [DEVCONF_ACCEPT_RA] = 1, [DEVCONF_ACCEPT_REDIRECTS] = 1, [DEVCONF_AUTOCONF] = 1, [DEVCONF_DAD_TRANSMITS] = 1, [DEVCONF_RTR_SOLICITS] = -1, [DEVCONF_RTR_SOLICIT_INTERVAL] = 4000, [DEVCONF_RTR_SOLICIT_DELAY] = 1000, [DEVCONF_USE_TEMPADDR] = 2, [DEVCONF_TEMP_VALID_LFT] = 604800, [DEVCONF_TEMP_PREFERED_LFT] = 86400, [DEVCONF_REGEN_MAX_RETRY] = 3, [DEVCONF_MAX_DESYNC_FACTOR] = 600, [DEVCONF_MAX_ADDRESSES] = 16, [DEVCONF_FORCE_MLD_VERSION] = 0, [DEVCONF_ACCEPT_RA_DEFRTR] = 1, [DEVCONF_ACCEPT_RA_PINFO] = 1, [DEVCONF_ACCEPT_RA_RTR_PREF] = 1, [DEVCONF_RTR_PROBE_INTERVAL] = 60000, [DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN] = 0, [DEVCONF_PROXY_NDP] = 0, [DEVCONF_OPTIMISTIC_DAD] = 0, [DEVCONF_ACCEPT_SOURCE_ROUTE] = 0, [DEVCONF_MC_FORWARDING] = 0, [DEVCONF_DISABLE_IPV6] = 0, [DEVCONF_ACCEPT_DAD] = 1, [DEVCONF_FORCE_TLLAO] = 0, [DEVCONF_NDISC_NOTIFY] = 0, [DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL] = 10000, [DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL] = 1000, ...]}, {{nla_len=300, nla_type=IFLA_INET6_STATS}, [[IPSTATS_MIB_NUM] = 37, [IPSTATS_MIB_INPKTS] = 99, [IPSTATS_MIB_INOCTETS] = 15738, [IPSTATS_MIB_INDELIVERS] = 99, [IPSTATS_MIB_OUTFORWDATAGRAMS] = 0, [IPSTATS_MIB_OUTPKTS] = 163, [IPSTATS_MIB_OUTOCTETS] = 19798, [IPSTATS_MIB_INHDRERRORS] = 0, [IPSTATS_MIB_INTOOBIGERRORS] = 0, [IPSTATS_MIB_INNOROUTES] = 0, [IPSTATS_MIB_INADDRERRORS] = 0, [IPSTATS_MIB_INUNKNOWNPROTOS] = 0, [IPSTATS_MIB_INTRUNCATEDPKTS] = 0, [IPSTATS_MIB_INDISCARDS] = 0, [IPSTATS_MIB_OUTDISCARDS] = 0, [IPSTATS_MIB_OUTNOROUTES] = 0, [IPSTATS_MIB_REASMTIMEOUT] = 0, [IPSTATS_MIB_REASMREQDS] = 0, [IPSTATS_MIB_REASMOKS] = 0, [IPSTATS_MIB_REASMFAILS] = 0, [IPSTATS_MIB_FRAGOKS] = 0, [IPSTATS_MIB_FRAGFAILS] = 0, [IPSTATS_MIB_FRAGCREATES] = 0, [IPSTATS_MIB_INMCASTPKTS] = 99, [IPSTATS_MIB_OUTMCASTPKTS] = 163, [IPSTATS_MIB_INBCASTPKTS] = 0, [IPSTATS_MIB_OUTBCASTPKTS] = 0, [IPSTATS_MIB_INMCASTOCTETS] = 15738, [IPSTATS_MIB_OUTMCASTOCTETS] = 19798, [IPSTATS_MIB_INBCASTOCTETS] = 0, [IPSTATS_MIB_OUTBCASTOCTETS] = 0, [IPSTATS_MIB_CSUMERRORS] = 0, ...]}, {{nla_len=52, nla_type=IFLA_INET6_ICMP6STATS}, [[ICMP6_MIB_NUM] = 6, [ICMP6_MIB_INMSGS] = 0, [ICMP6_MIB_INERRORS] = 0, [ICMP6_MIB_OUTMSGS] = 64, [ICMP6_MIB_OUTERRORS] = 0, [ICMP6_MIB_CSUMERRORS] = 0]}, {{nla_len=20, nla_type=IFLA_INET6_TOKEN}, inet_pton(AF_INET6, "::")}, {{nla_len=5, nla_type=IFLA_INET6_ADDR_GEN_MODE}, IN6_ADDR_GEN_MODE_EUI64}]}]}]}, {{len=1756, type=RTM_NEWLINK, flags=NLM_F_MULTI, seq=1, pid=2027851}, {ifi_family=AF_UNSPEC, ifi_type=ARPHRD_ETHER, ifi_index=if_nametoindex("br-4771ede80f37"), ifi_flags=IFF_UP|IFF_BROADCAST|IFF_MULTICAST, ifi_change=0}, [{{nla_len=20, nla_type=IFLA_IFNAME}, "br-4771ede80f37"}, {{nla_len=8, nla_type=IFLA_TXQLEN}, 0}, {{nla_len=5, nla_type=IFLA_OPERSTATE}, 2}, {{nla_len=5, nla_type=IFLA_LINKMODE}, 0}, {{nla_len=8, nla_type=IFLA_MTU}, 1500}, {{nla_len=8, nla_type=IFLA_MIN_MTU}, 68}, {{nla_len=8, nla_type=IFLA_MAX_MTU}, 65535}, {{nla_len=8, nla_type=IFLA_GROUP}, 0}, {{nla_len=8, nla_type=IFLA_PROMISCUITY}, 0}, {{nla_len=8, nla_type=IFLA_NUM_TX_QUEUES}, 1}, {{nla_len=8, nla_type=IFLA_GSO_MAX_SEGS}, 65535}, {{nla_len=8, nla_type=IFLA_GSO_MAX_SIZE}, 65536}, {{nla_len=8, nla_type=IFLA_NUM_RX_QUEUES}, 1}, {{nla_len=5, nla_type=IFLA_CARRIER}, 0}, {{nla_len=12, nla_type=IFLA_QDISC}, "noqueue"}, {{nla_len=8, nla_type=IFLA_CARRIER_CHANGES}, 1}, {{nla_len=5, nla_type=IFLA_PROTO_DOWN}, 0}, {{nla_len=8, nla_type=IFLA_CARRIER_UP_COUNT}, 0}, {{nla_len=8, nla_type=IFLA_CARRIER_DOWN_COUNT}, 1}, {{nla_len=36, nla_type=IFLA_MAP}, {mem_start=0, mem_end=0, base_addr=0, irq=0, dma=0, port=0}}, {{nla_len=10, nla_type=IFLA_ADDRESS}, "\x02\x42\xf4\x6c\xa2\x8f"}, {{nla_len=10, nla_type=IFLA_BROADCAST}, "\xff\xff\xff\xff\xff\xff"}, {{nla_len=196, nla_type=IFLA_STATS64}, {rx_packets=0, tx_packets=0, rx_bytes=0, tx_bytes=0, rx_errors=0, tx_errors=0, rx_dropped=0, tx_dropped=0, multicast=0, collisions=0, rx_length_errors=0, rx_over_errors=0, rx_crc_errors=0, rx_frame_errors=0, rx_fifo_errors=0, rx_missed_errors=0, tx_aborted_errors=0, tx_carrier_errors=0, tx_fifo_errors=0, tx_heartbeat_errors=0, tx_window_errors=0, rx_compressed=0, tx_compressed=0, rx_nohandler=0}}, {{nla_len=100, nla_type=IFLA_STATS}, {rx_packets=0, tx_packets=0, rx_bytes=0, tx_bytes=0, rx_errors=0, tx_errors=0, rx_dropped=0, tx_dropped=0, multicast=0, collisions=0, rx_length_errors=0, rx_over_errors=0, rx_crc_errors=0, rx_frame_errors=0, rx_fifo_errors=0, rx_missed_errors=0, tx_aborted_errors=0, tx_carrier_errors=0, tx_fifo_errors=0, tx_heartbeat_errors=0, tx_window_errors=0, rx_compressed=0, tx_compressed=0, rx_nohandler=0}}, {{nla_len=12, nla_type=IFLA_XDP}, {{nla_len=5, nla_type=IFLA_XDP_ATTACHED}, XDP_ATTACHED_NONE}}, {{nla_len=428, nla_type=IFLA_LINKINFO}, [{{nla_len=11, nla_type=IFLA_INFO_KIND}, "bridge"}, {{nla_len=412, nla_type=IFLA_INFO_DATA}, [{{nla_len=12, nla_type=IFLA_BR_HELLO_TIMER}, 0}, {{nla_len=12, nla_type=IFLA_BR_TCN_TIMER}, 0}, {{nla_len=12, nla_type=IFLA_BR_TOPOLOGY_CHANGE_TIMER}, 0}, {{nla_len=12, nla_type=IFLA_BR_GC_TIMER}, 11787}, {{nla_len=8, nla_type=IFLA_BR_FORWARD_DELAY}, 1500}, {{nla_len=8, nla_type=IFLA_BR_HELLO_TIME}, 200}, {{nla_len=8, nla_type=IFLA_BR_MAX_AGE}, 2000}, {{nla_len=8, nla_type=IFLA_BR_AGEING_TIME}, 30000}, {{nla_len=8, nla_type=IFLA_BR_STP_STATE}, 0}, {{nla_len=6, nla_type=IFLA_BR_PRIORITY}, 32768}, {{nla_len=5, nla_type=IFLA_BR_VLAN_FILTERING}, 0}, {{nla_len=6, nla_type=IFLA_BR_GROUP_FWD_MASK}, 0}, {{nla_len=12, nla_type=IFLA_BR_BRIDGE_ID}, {prio=[128, 0], addr=02:42:f4:6c:a2:8f}}, {{nla_len=12, nla_type=IFLA_BR_ROOT_ID}, {prio=[128, 0], addr=02:42:f4:6c:a2:8f}}, {{nla_len=6, nla_type=IFLA_BR_ROOT_PORT}, 0}, {{nla_len=8, nla_type=IFLA_BR_ROOT_PATH_COST}, 0}, {{nla_len=5, nla_type=IFLA_BR_TOPOLOGY_CHANGE}, 0}, {{nla_len=5, nla_type=IFLA_BR_TOPOLOGY_CHANGE_DETECTED}, 0}, {{nla_len=10, nla_type=IFLA_BR_GROUP_ADDR}, "\x01\x80\xc2\x00\x00\x00"}, {{nla_len=12, nla_type=IFLA_BR_MULTI_BOOLOPT}, "\x00\x00\x00\x00\x01\x00\x00\x00"}, {{nla_len=6, nla_type=IFLA_BR_VLAN_PROTOCOL}, htons(ETH_P_8021Q)}, {{nla_len=6, nla_type=IFLA_BR_VLAN_DEFAULT_PVID}, 1}, {{nla_len=5, nla_type=IFLA_BR_VLAN_STATS_ENABLED}, 0}, {{nla_len=5, nla_type=IFLA_BR_VLAN_STATS_PER_PORT}, 0}, {{nla_len=5, nla_type=IFLA_BR_MCAST_ROUTER}, 1}, {{nla_len=5, nla_type=IFLA_BR_MCAST_SNOOPING}, 1}, {{nla_len=5, nla_type=IFLA_BR_MCAST_QUERY_USE_IFADDR}, 0}, {{nla_len=5, nla_type=IFLA_BR_MCAST_QUERIER}, 0}, {{nla_len=5, nla_type=IFLA_BR_MCAST_STATS_ENABLED}, 0}, {{nla_len=8, nla_type=IFLA_BR_MCAST_HASH_ELASTICITY}, 16}, {{nla_len=8, nla_type=IFLA_BR_MCAST_HASH_MAX}, 4096}, {{nla_len=8, nla_type=IFLA_BR_MCAST_LAST_MEMBER_CNT}, 2}, ...]}]}, {{nla_len=760, nla_type=IFLA_AF_SPEC}, [{{nla_len=136, nla_type=AF_INET}, {{nla_len=132, nla_type=IFLA_INET_CONF}, [[IPV4_DEVCONF_FORWARDING-1] = 1, [IPV4_DEVCONF_MC_FORWARDING-1] = 0, [IPV4_DEVCONF_PROXY_ARP-1] = 0, [IPV4_DEVCONF_ACCEPT_REDIRECTS-1] = 1, [IPV4_DEVCONF_SECURE_REDIRECTS-1] = 1, [IPV4_DEVCONF_SEND_REDIRECTS-1] = 1, [IPV4_DEVCONF_SHARED_MEDIA-1] = 1, [IPV4_DEVCONF_RP_FILTER-1] = 2, [IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE-1] = 1, [IPV4_DEVCONF_BOOTP_RELAY-1] = 0, [IPV4_DEVCONF_LOG_MARTIANS-1] = 0, [IPV4_DEVCONF_TAG-1] = 0, [IPV4_DEVCONF_ARPFILTER-1] = 0, [IPV4_DEVCONF_MEDIUM_ID-1] = 0, [IPV4_DEVCONF_NOXFRM-1] = 0, [IPV4_DEVCONF_NOPOLICY-1] = 0, [IPV4_DEVCONF_FORCE_IGMP_VERSION-1] = 0, [IPV4_DEVCONF_ARP_ANNOUNCE-1] = 0, [IPV4_DEVCONF_ARP_IGNORE-1] = 0, [IPV4_DEVCONF_PROMOTE_SECONDARIES-1] = 1, [IPV4_DEVCONF_ARP_ACCEPT-1] = 0, [IPV4_DEVCONF_ARP_NOTIFY-1] = 0, [IPV4_DEVCONF_ACCEPT_LOCAL-1] = 0, [IPV4_DEVCONF_SRC_VMARK-1] = 0, [IPV4_DEVCONF_PROXY_ARP_PVLAN-1] = 0, [IPV4_DEVCONF_ROUTE_LOCALNET-1] = 0, [IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL-1] = 10000, [IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL-1] = 1000, [IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN-1] = 0, [IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST-1] = 0, [IPV4_DEVCONF_DROP_GRATUITOUS_ARP-1] = 0, [IPV4_DEVCONF_BC_FORWARDING-1] = 0]}}, {{nla_len=620, nla_type=AF_INET6}, [{{nla_len=8, nla_type=IFLA_INET6_FLAGS}, 0}, {{nla_len=20, nla_type=IFLA_INET6_CACHEINFO}, {max_reasm_len=65535, tstamp=7808380, reachable_time=24024, retrans_time=1000}}, {{nla_len=208, nla_type=IFLA_INET6_CONF}, [[DEVCONF_FORWARDING] = 0, [DEVCONF_HOPLIMIT] = 64, [DEVCONF_MTU6] = 1500, [DEVCONF_ACCEPT_RA] = 1, [DEVCONF_ACCEPT_REDIRECTS] = 1, [DEVCONF_AUTOCONF] = 1, [DEVCONF_DAD_TRANSMITS] = 1, [DEVCONF_RTR_SOLICITS] = -1, [DEVCONF_RTR_SOLICIT_INTERVAL] = 4000, [DEVCONF_RTR_SOLICIT_DELAY] = 1000, [DEVCONF_USE_TEMPADDR] = 2, [DEVCONF_TEMP_VALID_LFT] = 604800, [DEVCONF_TEMP_PREFERED_LFT] = 86400, [DEVCONF_REGEN_MAX_RETRY] = 3, [DEVCONF_MAX_DESYNC_FACTOR] = 600, [DEVCONF_MAX_ADDRESSES] = 16, [DEVCONF_FORCE_MLD_VERSION] = 0, [DEVCONF_ACCEPT_RA_DEFRTR] = 1, [DEVCONF_ACCEPT_RA_PINFO] = 1, [DEVCONF_ACCEPT_RA_RTR_PREF] = 1, [DEVCONF_RTR_PROBE_INTERVAL] = 60000, [DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN] = 0, [DEVCONF_PROXY_NDP] = 0, [DEVCONF_OPTIMISTIC_DAD] = 0, [DEVCONF_ACCEPT_SOURCE_ROUTE] = 0, [DEVCONF_MC_FORWARDING] = 0, [DEVCONF_DISABLE_IPV6] = 0, [DEVCONF_ACCEPT_DAD] = 1, [DEVCONF_FORCE_TLLAO] = 0, [DEVCONF_NDISC_NOTIFY] = 0, [DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL] = 10000, [DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL] = 1000, ...]}, {{nla_len=300, nla_type=IFLA_INET6_STATS}, [[IPSTATS_MIB_NUM] = 37, [IPSTATS_MIB_INPKTS] = 0, [IPSTATS_MIB_INOCTETS] = 0, [IPSTATS_MIB_INDELIVERS] = 0, [IPSTATS_MIB_OUTFORWDATAGRAMS] = 0, [IPSTATS_MIB_OUTPKTS] = 0, [IPSTATS_MIB_OUTOCTETS] = 0, [IPSTATS_MIB_INHDRERRORS] = 0, [IPSTATS_MIB_INTOOBIGERRORS] = 0, [IPSTATS_MIB_INNOROUTES] = 0, [IPSTATS_MIB_INADDRERRORS] = 0, [IPSTATS_MIB_INUNKNOWNPROTOS] = 0, [IPSTATS_MIB_INTRUNCATEDPKTS] = 0, [IPSTATS_MIB_INDISCARDS] = 0, [IPSTATS_MIB_OUTDISCARDS] = 0, [IPSTATS_MIB_OUTNOROUTES] = 0, [IPSTATS_MIB_REASMTIMEOUT] = 0, [IPSTATS_MIB_REASMREQDS] = 0, [IPSTATS_MIB_REASMOKS] = 0, [IPSTATS_MIB_REASMFAILS] = 0, [IPSTATS_MIB_FRAGOKS] = 0, [IPSTATS_MIB_FRAGFAILS] = 0, [IPSTATS_MIB_FRAGCREATES] = 0, [IPSTATS_MIB_INMCASTPKTS] = 0, [IPSTATS_MIB_OUTMCASTPKTS] = 0, [IPSTATS_MIB_INBCASTPKTS] = 0, [IPSTATS_MIB_OUTBCASTPKTS] = 0, [IPSTATS_MIB_INMCASTOCTETS] = 0, [IPSTATS_MIB_OUTMCASTOCTETS] = 0, [IPSTATS_MIB_INBCASTOCTETS] = 0, [IPSTATS_MIB_OUTBCASTOCTETS] = 0, [IPSTATS_MIB_CSUMERRORS] = 0, ...]}, {{nla_len=52, nla_type=IFLA_INET6_ICMP6STATS}, [[ICMP6_MIB_NUM] = 6, [ICMP6_MIB_INMSGS] = 0, [ICMP6_MIB_INERRORS] = 0, [ICMP6_MIB_OUTMSGS] = 0, [ICMP6_MIB_OUTERRORS] = 0, [ICMP6_MIB_CSUMERRORS] = 0]}, {{nla_len=20, nla_type=IFLA_INET6_TOKEN}, inet_pton(AF_INET6, "::")}, {{nla_len=5, nla_type=IFLA_INET6_ADDR_GEN_MODE}, IN6_ADDR_GEN_MODE_EUI64}]}]}]}], 4096, 0, {sa_family=AF_NETLINK, nl_pid=0, nl_groups=00000000}, [112->12]) = 3512 +epoll_pwait(3, [], 128, 0, NULL, 1) = 0 +futex(0xc000839648, FUTEX_WAKE_PRIVATE, 1) = 1 +getpid() = 2027851 +tgkill(2027851, 2027865, SIGURG) = 0 +getsockname(6, {sa_family=AF_NETLINK, nl_pid=2027851, nl_groups=00000000}, [112->12]) = 0 +getsockname(6, {sa_family=AF_NETLINK, nl_pid=2027851, nl_groups=00000000}, [112->12]) = 0 +--- SIGURG {si_signo=SIGURG, si_code=SI_TKILL, si_pid=2027851, si_uid=1000} --- +rt_sigreturn({mask=[]}) = 0 +futex(0x5339dd0, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000051648, FUTEX_WAKE_PRIVATE, 1) = 1 +--- SIGURG {si_signo=SIGURG, si_code=SI_TKILL, si_pid=2027851, si_uid=1000} --- +rt_sigreturn({mask=[]}) = 2109440 +getpid() = 2027851 +tgkill(2027851, 2027864, SIGURG) = 0 +getpid() = 2027851 +tgkill(2027851, 2027861, SIGURG) = 0 +futex(0x5339cb8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x5339dd0, FUTEX_WAIT_PRIVATE, 0, {tv_sec=0, tv_nsec=100000}) = 0 +futex(0x5339dd0, FUTEX_WAIT_PRIVATE, 0, {tv_sec=0, tv_nsec=100000}) = -1 EAGAIN (Resource temporarily unavailable) +getpid() = 2027851 +tgkill(2027851, 2027863, SIGURG) = 0 +futex(0x5339cb8, FUTEX_WAKE_PRIVATE, 1) = 1 +epoll_pwait(3, [], 128, 0, NULL, 140732346061720) = 0 +futex(0xc0006064c8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x5339dd0, FUTEX_WAIT_PRIVATE, 0, {tv_sec=0, tv_nsec=100000}) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc0002cc148, FUTEX_WAKE_PRIVATE, 1) = 1 +write(2, "2020-12-16T12:43:18.268-0600\tINF"..., 97) = 97 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +nanosleep({tv_sec=0, tv_nsec=3000}, NULL) = 0 +futex(0xc0002cc148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0002cc148, FUTEX_WAKE_PRIVATE, 1) = 1 +openat(AT_FDCWD, "/etc/nsswitch.conf", O_RDONLY|O_CLOEXEC) = 7 +epoll_ctl(3, EPOLL_CTL_ADD, 7, {EPOLLIN|EPOLLOUT|EPOLLRDHUP|EPOLLET, {u32=1594020696, u64=139777009701720}}) = -1 EPERM (Operation not permitted) +epoll_ctl(3, EPOLL_CTL_DEL, 7, 0xc0007349dc) = -1 EPERM (Operation not permitted) +read(7, "# /etc/nsswitch.conf\n#\n# Example"..., 1024) = 542 +read(7, "", 1024) = 0 +close(7) = 0 +openat(AT_FDCWD, "/etc/resolv.conf", O_RDONLY|O_CLOEXEC) = 7 +epoll_ctl(3, EPOLL_CTL_ADD, 7, {EPOLLIN|EPOLLOUT|EPOLLRDHUP|EPOLLET, {u32=1594020696, u64=139777009701720}}) = -1 EPERM (Operation not permitted) +epoll_ctl(3, EPOLL_CTL_DEL, 7, 0xc0007348b4) = -1 EPERM (Operation not permitted) +fstat(7, {st_mode=S_IFREG|0644, st_size=730, ...}) = 0 +read(7, "# This file is managed by man:sy"..., 65536) = 730 +read(7, "", 64806) = 0 +read(7, "", 65536) = 0 +close(7) = 0 +newfstatat(AT_FDCWD, "/etc/mdns.allow", 0xc0004d6378, 0) = -1 ENOENT (No such file or directory) +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc0000c9648, FUTEX_WAKE_PRIVATE, 1) = 1 +epoll_pwait(3, [], 128, 0, NULL, 140732346061720) = 0 +mmap(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f205c4ca000 +read(8, "{\"type\":\"journey/start\",\"@timest"..., 2097152) = 157 +futex(0x5339db8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x5339cb8, FUTEX_WAKE_PRIVATE, 1) = 1 +--- SIGURG {si_signo=SIGURG, si_code=SI_TKILL, si_pid=2027851, si_uid=1000} --- +rt_sigreturn({mask=[]}) = 139776965723872 +futex(0xc0000c9648, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"step/screenshot\",\"@time"..., 2096995) = 109333 +futex(0x5339db8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x5339cb8, FUTEX_WAKE_PRIVATE, 1) = 1 +--- SIGURG {si_signo=SIGURG, si_code=SI_TKILL, si_pid=2027851, si_uid=1000} --- +rt_sigreturn({mask=[]}) = 12413 +futex(0xc0005d0148, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"step/end\",\"@timestamp\":"..., 1987662) = 391 +write(5, "\0", 1) = 1 +write(5, "\0", 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc0005d0148, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"step/end\",\"@timestamp\":"..., 1696247) = 284 +futex(0xc0005d0148, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1695963) = 5772 +futex(0xc000606148, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1690191) = 4887 +futex(0xc0005d0148, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1685304) = 4907 +futex(0xc000606148, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1680397) = 4894 +futex(0xc000051648, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1675503) = 4895 +futex(0xc000606148, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1670608) = 4903 +futex(0xc000606148, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1665705) = 4906 +futex(0xc0005d0148, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1660799) = 4897 +futex(0xc000606148, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1655902) = 4892 +futex(0xc000051648, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1651010) = 3389 +futex(0xc000606148, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1647621) = 5021 +futex(0xc000051648, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1642600) = 5027 +futex(0xc0005d0148, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1637573) = 5040 +futex(0xc000606148, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1632533) = 5034 +futex(0xc0005d0148, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1627499) = 5131 +futex(0xc000606148, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1622368) = 5128 +futex(0xc0005d0148, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1617240) = 5127 +futex(0xc000606148, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1612113) = 5127 +futex(0xc0005d0148, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1606986) = 5127 +futex(0xc000606148, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1601859) = 5134 +futex(0xc0005d0148, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1596725) = 5122 +futex(0xc000051648, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1591603) = 5128 +futex(0xc000606148, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1586475) = 5042 +futex(0xc000051648, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1581433) = 5132 +futex(0xc000606148, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1576301) = 5041 +futex(0xc0005d0148, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1571260) = 4854 +futex(0xc000606148, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1566406) = 4851 +futex(0xc000051648, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1561555) = 4858 +futex(0xc0005d0148, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1556697) = 4851 +futex(0xc000051648, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1551846) = 4855 +futex(0xc0005d0148, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1546991) = 4858 +futex(0xc000051648, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1542133) = 4855 +futex(0xc0005d0148, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1537278) = 4850 +futex(0xc000051648, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1532428) = 4858 +futex(0xc0000c9648, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1527570) = 4859 +futex(0xc0005d0148, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1522711) = 4851 +futex(0xc0000c9648, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1517860) = 4857 +futex(0xc000051648, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1513003) = 4853 +futex(0xc0000c9648, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1508150) = 4856 +futex(0xc0000c9648, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1503294) = 4850 +futex(0xc000051648, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1498444) = 4856 +futex(0xc0000c9648, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1493588) = 4853 +futex(0xc000051648, FUTEX_WAKE_PRIVATE, 1) = 1 +--- SIGURG {si_signo=SIGURG, si_code=SI_TKILL, si_pid=2027851, si_uid=1000} --- +rt_sigreturn({mask=[]}) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1488735) = 4847 +futex(0xc0005d0148, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1483888) = 4851 +futex(0xc0000c9648, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1479037) = 4852 +futex(0xc000051648, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1474185) = 4852 +futex(0xc0005d0148, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1469333) = 4850 +futex(0xc0000c9648, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1464483) = 4850 +futex(0xc000051648, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1459633) = 4851 +futex(0xc000606148, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 1454782) = 4854 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = -1 EAGAIN (Resource temporarily unavailable) +futex(0xc000051648, FUTEX_WAKE_PRIVATE, 1) = 1 +nanosleep({tv_sec=0, tv_nsec=3000}, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc000051648, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000051648, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc000051648, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000051648, FUTEX_WAKE_PRIVATE, 1) = 1 +epoll_pwait(3, [], 128, 0, NULL, 140732346061224) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc000051648, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000051648, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc000051648, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000051648, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc000051648, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000051648, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc000051648, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000051648, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc000051648, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000051648, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc000051648, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000051648, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc000051648, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000051648, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc000051648, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000051648, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc000051648, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000051648, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc000051648, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x5339da8, FUTEX_WAIT_PRIVATE, 0, {tv_sec=0, tv_nsec=100000}) = -1 EAGAIN (Resource temporarily unavailable) +epoll_pwait(3, [], 128, 0, NULL, 16) = 0 +futex(0xc000051648, FUTEX_WAKE_PRIVATE, 1) = 1 +getpid() = 2027851 +tgkill(2027851, 2027864, SIGURG) = 0 +epoll_pwait(3, [], 128, 0, NULL, 140732346061224) = 0 +futex(0xc0002cc148, FUTEX_WAKE_PRIVATE, 1) = 1 +getpid() = 2027851 +--- SIGURG {si_signo=SIGURG, si_code=SI_TKILL, si_pid=2027851, si_uid=1000} --- +rt_sigreturn({mask=[]}) = 2027851 +tgkill(2027851, 2027859, SIGURG) = 0 +getpid() = 2027851 +tgkill(2027851, 2027869, SIGURG) = 0 +futex(0x5339cb8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0002cc148, FUTEX_WAKE_PRIVATE, 1) = 1 +getpid() = 2027851 +tgkill(2027851, 2027869, SIGURG) = 0 +getpid() = 2027851 +tgkill(2027851, 2027860, SIGURG) = 0 +futex(0x5339cb8, FUTEX_WAKE_PRIVATE, 1) = 1 +getpid() = 2027851 +tgkill(2027851, 2027860, SIGURG) = 0 +futex(0x5339cb8, FUTEX_WAKE_PRIVATE, 1) = 1 +getpid() = 2027851 +tgkill(2027851, 2027860, SIGURG) = 0 +futex(0x5339cb8, FUTEX_WAKE_PRIVATE, 1) = 1 +epoll_pwait(3, [], 128, 0, NULL, 140732346061720) = 0 +futex(0xc000606148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x5339cb8, FUTEX_WAKE_PRIVATE, 1) = 1 +epoll_pwait(3, [], 128, 0, NULL, 140732346061160) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +epoll_pwait(3, [], 128, 0, NULL, 140732346061160) = 0 +epoll_pwait(3, [{EPOLLIN, {u32=87457824, u64=87457824}}], 128, 2464, NULL, 0) = 1 +read(4, "\0\0\0", 16) = 3 +epoll_pwait(3, [], 128, 0, NULL, 140732346061240) = 0 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}], 128, 101, NULL, 0) = 1 +epoll_pwait(3, [], 128, 0, NULL, 140732346061240) = 0 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}], 128, 101, NULL, 0) = 1 +epoll_pwait(3, [], 128, 0, NULL, 140732346061160) = 0 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}], 128, 99, NULL, 0) = 1 +epoll_pwait(3, [], 128, 0, NULL, 140732346061240) = 0 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}], 128, 98, NULL, 0) = 1 +epoll_pwait(3, [], 128, 0, NULL, 140732346061160) = 0 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}], 128, 97, NULL, 0) = 1 +epoll_pwait(3, [], 128, 0, NULL, 140732346061160) = 0 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}], 128, 96, NULL, 0) = 1 +epoll_pwait(3, [], 128, 0, NULL, 140732346061160) = 0 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}, {EPOLLIN, {u32=1594020696, u64=139777009701720}}], 128, 95, NULL, 0) = 2 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}], 128, 0, NULL, 140732346061160) = 1 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}, {EPOLLIN, {u32=1594020696, u64=139777009701720}}], 128, 94, NULL, 0) = 2 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}], 128, 0, NULL, 140732346061160) = 1 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}, {EPOLLIN, {u32=1594020696, u64=139777009701720}}], 128, 93, NULL, 0) = 2 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}], 128, 0, NULL, 140732346061160) = 1 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}, {EPOLLIN, {u32=1594020696, u64=139777009701720}}], 128, 92, NULL, 0) = 2 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}], 128, 0, NULL, 140732346061240) = 1 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}, {EPOLLIN, {u32=1594020696, u64=139777009701720}}], 128, 92, NULL, 0) = 2 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}], 128, 0, NULL, 140732346061160) = 1 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}, {EPOLLIN, {u32=1594020696, u64=139777009701720}}], 128, 91, NULL, 0) = 2 +epoll_pwait(3, [], 128, 0, NULL, 140732346061240) = 0 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}], 128, 90, NULL, 0) = 1 +epoll_pwait(3, [], 128, 0, NULL, 140732346061240) = 0 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}, {EPOLLIN, {u32=1594020696, u64=139777009701720}}], 128, 90, NULL, 0) = 2 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}], 128, 0, NULL, 140732346061160) = 1 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}, {EPOLLIN, {u32=1594020696, u64=139777009701720}}], 128, 90, NULL, 0) = 2 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}], 128, 0, NULL, 140732346061240) = 1 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}, {EPOLLIN, {u32=1594020696, u64=139777009701720}}], 128, 88, NULL, 0) = 2 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}], 128, 0, NULL, 140732346061160) = 1 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}, {EPOLLIN, {u32=1594020696, u64=139777009701720}}], 128, 88, NULL, 0) = 2 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}], 128, 0, NULL, 140732346061160) = 1 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}, {EPOLLIN, {u32=1594020696, u64=139777009701720}}], 128, 87, NULL, 0) = 2 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}], 128, 0, NULL, 140732346061160) = 1 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}, {EPOLLIN, {u32=1594020696, u64=139777009701720}}], 128, 87, NULL, 0) = 2 +epoll_pwait(3, [], 128, 0, NULL, 140732346061160) = 0 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}], 128, 86, NULL, 0) = 1 +epoll_pwait(3, [], 128, 0, NULL, 140732346061160) = 0 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}, {EPOLLIN, {u32=1594020696, u64=139777009701720}}], 128, 86, NULL, 0) = 2 +epoll_pwait(3, [], 128, 0, NULL, 140732346061160) = 0 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}], 128, 86, NULL, 0) = 1 +epoll_pwait(3, [], 128, 0, NULL, 140732346061160) = 0 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}, {EPOLLIN, {u32=1594020696, u64=139777009701720}}], 128, 85, NULL, 0) = 2 +epoll_pwait(3, [], 128, 0, NULL, 140732346061160) = 0 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}], 128, 85, NULL, 0) = 1 +epoll_pwait(3, [], 128, 0, NULL, 140732346061240) = 0 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}], 128, 85, NULL, 0) = 1 +epoll_pwait(3, [], 128, 0, NULL, 140732346061240) = 0 +epoll_pwait(3, [], 128, 0, NULL, 0) = 0 +futex(0xc0005d0148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000718148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc000718148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000718148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc000718148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000718148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc000718148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000718148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc000718148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000718148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc000718148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000718148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc000718148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000718148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc000718148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000718148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc000718148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000718148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc000718148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000718148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc000718148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000718148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc000606148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000606148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc000606148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000606148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc000606148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000606148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc000606148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000606148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc000606148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000606148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc000606148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc000606148, FUTEX_WAKE_PRIVATE, 1) = 1 +epoll_pwait(3, [], 128, 0, NULL, 824638930312) = 0 +epoll_pwait(3, [{EPOLLIN, {u32=87457824, u64=87457824}}], 128, -1, NULL, 824638930312) = 1 +read(4, "\0", 16) = 1 +epoll_pwait(3, [], 128, 0, NULL, 140732346061224) = 0 +write(5, "\0", 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}], 128, 70, NULL, 0) = 1 +epoll_pwait(3, [], 128, 0, NULL, 140732346061304) = 0 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}, {EPOLLIN, {u32=1594020696, u64=139777009701720}}], 128, 69, NULL, 0) = 2 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}], 128, 0, NULL, 140732346061304) = 1 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}, {EPOLLIN, {u32=1594020696, u64=139777009701720}}], 128, 69, NULL, 0) = 2 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}], 128, 0, NULL, 140732346061304) = 1 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}, {EPOLLIN, {u32=1594020696, u64=139777009701720}}], 128, 69, NULL, 0) = 2 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}], 128, 0, NULL, 140732346061304) = 1 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}], 128, 68, NULL, 0) = 1 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}], 128, 0, NULL, 140732346061224) = 1 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}], 128, 68, NULL, 0) = 1 +epoll_pwait(3, [], 128, 0, NULL, 140732346061304) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc0005d0148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0002cc148, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 2070604) = 2822 +futex(0xc0005d0148, FUTEX_WAKE_PRIVATE, 1) = 1 +read(8, "{\"type\":\"journey/network_info\",\""..., 2067782) = 2907 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc0002cc148, FUTEX_WAKE_PRIVATE, 1) = 1 +nanosleep({tv_sec=0, tv_nsec=3000}, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +nanosleep({tv_sec=0, tv_nsec=3000}, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc0002cc148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0002cc148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc0002cc148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0002cc148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc0002cc148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0002cc148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc0002cc148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0xc0002cc148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = -1 EAGAIN (Resource temporarily unavailable) +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +nanosleep({tv_sec=0, tv_nsec=3000}, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +epoll_pwait(3, [], 128, 0, NULL, 0) = 0 +nanosleep({tv_sec=0, tv_nsec=3000}, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc0002cc148, FUTEX_WAKE_PRIVATE, 1) = 1 +nanosleep({tv_sec=0, tv_nsec=3000}, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}], 128, 0, NULL, 0) = 1 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}, {EPOLLIN, {u32=1594020696, u64=139777009701720}}], 128, 61, NULL, 0) = 2 +epoll_pwait(3, [], 128, 0, NULL, 140732346061224) = 0 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}, {EPOLLIN, {u32=1594020696, u64=139777009701720}}], 128, 61, NULL, 0) = 2 +epoll_pwait(3, [], 128, 0, NULL, 140732346061224) = 0 +write(5, "\0", 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc000606148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}, {EPOLLIN, {u32=1594020696, u64=139777009701720}}], 128, 0, NULL, 0) = 2 +epoll_pwait(3, [], 128, 0, NULL, 824638930312) = 0 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}, {EPOLLIN, {u32=1594020696, u64=139777009701720}}], 128, 0, NULL, 824638930312) = 2 +epoll_pwait(3, [], 128, 0, NULL, 87457824) = 0 +epoll_pwait(3, [], 128, 0, NULL, 87457824) = 0 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}], 128, 0, NULL, 87457824) = 1 +epoll_pwait(3, [], 128, 0, NULL, 87457824) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +epoll_pwait(3, [], 128, 0, NULL, 0) = 0 +epoll_pwait(3, [{EPOLLOUT, {u32=1594020472, u64=139777009701496}}], 128, 2422, NULL, 0) = 1 +epoll_pwait(3, [{EPOLLIN, {u32=87457824, u64=87457824}}], 128, 0, NULL, 140732346061224) = 1 +nanosleep({tv_sec=0, tv_nsec=3000}, NULL) = 0 +write(5, "\0", 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = -1 EAGAIN (Resource temporarily unavailable) +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = -1 EAGAIN (Resource temporarily unavailable) +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc000606148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +epoll_pwait(3, [], 128, 0, NULL, 140732346061224) = 0 +nanosleep({tv_sec=0, tv_nsec=3000}, NULL) = 0 +futex(0xc0005d0bc8, FUTEX_WAKE_PRIVATE, 1) = 1 +epoll_pwait(3, [], 128, 0, NULL, 1) = 0 +epoll_pwait(3, [], 128, 0, NULL, 1) = 0 +epoll_pwait(3, [], 128, 0, NULL, 1) = 0 +epoll_pwait(3, [], 128, 0, NULL, 1) = 0 +write(5, "\0", 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc000718148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc0002cc148, FUTEX_WAKE_PRIVATE, 1) = 1 +nanosleep({tv_sec=0, tv_nsec=3000}, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc0002cc148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +epoll_pwait(3, [], 128, 0, NULL, 140732346061224) = 0 +nanosleep({tv_sec=0, tv_nsec=3000}, NULL) = 0 +futex(0xc0005d0bc8, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = -1 EAGAIN (Resource temporarily unavailable) +futex(0xc0002cc148, FUTEX_WAKE_PRIVATE, 1) = 1 +nanosleep({tv_sec=0, tv_nsec=3000}, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0xc0002cc148, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +epoll_pwait(3, [], 128, 0, NULL, 1) = 0 +write(5, "\0", 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +write(5, "\0", 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +epoll_pwait(3, [], 128, 0, NULL, 2) = 0 +write(5, "\0", 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +write(5, "\0", 1) = 1 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +epoll_pwait(3, [], 128, 0, NULL, 140732346061224) = 0 +nanosleep({tv_sec=0, tv_nsec=3000}, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = ? ERESTARTSYS (To be restarted if SA_RESTART is set) +--- SIGINT {si_signo=SIGINT, si_code=SI_KERNEL} --- +futex(0x5368d00, FUTEX_WAKE_PRIVATE, 1) = 1 +rt_sigreturn({mask=[]}) = 202 +futex(0x533ac88, FUTEX_WAIT_PRIVATE, 0, NULL) = ? ++++ exited with 0 +++