Received: (at 74900) by debbugs.gnu.org; 29 Dec 2024 21:59:55 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Dec 29 16:59:55 2024 Received: from localhost ([127.0.0.1]:56449 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tS1KF-0007uV-GP for submit <at> debbugs.gnu.org; Sun, 29 Dec 2024 16:59:55 -0500 Received: from mail-vs1-f48.google.com ([209.85.217.48]:60643) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <d.khodabakhsh@HIDDEN>) id 1tS1KD-0007uG-Cz for 74900 <at> debbugs.gnu.org; Sun, 29 Dec 2024 16:59:53 -0500 Received: by mail-vs1-f48.google.com with SMTP id ada2fe7eead31-4b24d969db1so2071944137.0 for <74900 <at> debbugs.gnu.org>; Sun, 29 Dec 2024 13:59:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1735509528; x=1736114328; darn=debbugs.gnu.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=1O/4P0g06DFTMGOWlUtrj87JRq+B7/i3BoQ5LSubkBQ=; b=MoDAzTF4csxfeGO+76v1MihF3OSf4/AifxTlaJyRovvh37wiSmOEg8zl2u3K46PWrO rd5dN3XKvVFjP/72LD9t2dabin83IPCj5sBYEfMxEC2e30Q/gvqC5ACfBCeUEAEwtgdJ WdfFUEiA9dA2BFlLLww+P71/+mPXHOYGYoD8S1OJFkfik4lYmruz1Gf+9K0KXsCPa9ia VJ/ECJQ4ig7jWTD3NoDeKTtIufbQsBcJIjV1LrZpT+xWG2J4zdeAT14kqxVtio4pZkUz Rv3MzXKXYblsuAkUWEZ8FfUdFqZG/kZW6d6Qv6NwTiIUWviKWYq8TAzqUl+EeH8iFBpC 1wug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1735509528; x=1736114328; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=1O/4P0g06DFTMGOWlUtrj87JRq+B7/i3BoQ5LSubkBQ=; b=W4ziomaU56OxfMu9W8m5iBBRX+EhueAyBwJBe2q22IMe00slR4vax9OSZCStxYpAIN 9fqbkYtstKnMBOxA1kq0xgZZkZLEEWo4YhgeDBE9KR8FspUFiPREYBI9HHeWh2/RjQ8U 6SEzkktyvHPLGpUNwCjsg8JPk8R7kYg/ytgAofqoB5OkQEz5WLFPJRZMs8Rq3U4wzAhH Zy6mA2nkbiiV955bIKL2P60Ufz9Aal4c8bryuFViXKuJ5T/UjbTrN1V+WQUD80+A5fLx R9YfSgM25rSrnhOnZ7T/W2cQ+s+nmU74BMJGtfMO4nlOdEIyFx3WdhVjlrjneTw1xFR0 xxkQ== X-Gm-Message-State: AOJu0Yyt6Aoh5A5P/sw7x7n2yBPtma4WF2x1IPS6w6090EfxvtGYxIfd PpKPGa8kJxI2UrCvFvpPP3pp7Dx2giE8hGWJmNGxUVhIT8/PblC7ymIccHzkYyfa4Z59rjY5ISD LoEkvUY4rLD4ODk2r9YvIghRkoR7pKVsX X-Gm-Gg: ASbGncsj1w+FtkdH9sVLkyqNm2WGXSXThu1Jis58KFmijHmePM0Ym1iMWkXOSbz7jM1 dyVWwSYuxd5Ezaplci2WOofGDZmy20yhwaaZCTZ/e X-Google-Smtp-Source: AGHT+IGVwYnGldx1yjnjNxN4ffk6MLaWjomGZWW1Qfed+j3avGkTyMAwRqLQfXn/JbjZO6TeGDket2k9zKQ0eYOtiaE= X-Received: by 2002:a05:6102:3e83:b0:4b2:af6e:5fef with SMTP id ada2fe7eead31-4b2cc35c2d5mr26478081137.9.1735509527302; Sun, 29 Dec 2024 13:58:47 -0800 (PST) MIME-Version: 1.0 From: Daniel Khodabakhsh <d.khodabakhsh@HIDDEN> Date: Sun, 29 Dec 2024 21:58:35 +0000 Message-ID: <CAADuFnLa3g3NFk4+uRvs2P1nz+PFp_qFscGFQpAGv79-WL_9+w@HIDDEN> Subject: [PATCH 2/2] Introduce (modify-json), (delete-fields), and (replace-fields) to node-build-system To: 74900 <at> debbugs.gnu.org Content-Type: multipart/mixed; boundary="000000000000e12ff3062a6fccd4" X-Debbugs-Envelope-To: 74900 X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> --000000000000e12ff3062a6fccd4 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable This change introduces helper procedures (modify-json) which takes in lambd= as which modify the target json #:file which defaults to package.json This change also includes (delete-fields) and (replace-fields) to help dele= ting and replacing the value of fields in a package.json file. Signed-off-by: Daniel Khodabakhsh <d.khodabakhsh@HIDDEN> Change-Id: I957f7ca814078d2136d5261985174820235f1369 --- gnu/packages/node-xyz.scm | 324 ++++++++++++++----------------- gnu/packages/node.scm | 86 ++++---- guix/build/node-build-system.scm | 198 +++++++++++++++---- 3 files changed, 355 insertions(+), 253 deletions(-) diff --git a/gnu/packages/node-xyz.scm b/gnu/packages/node-xyz.scm index ec3f9fbfb1..cdc69de0c1 100644 --- a/gnu/packages/node-xyz.scm +++ b/gnu/packages/node-xyz.scm @@ -69,18 +69,7 @@ (define-public node-acorn ;; We need to remove the prepare script from "package.json", = as ;; it would try to use the build environment and would block = the ;; automatic building by other packages making use of node-ac= orn. - ;; TODO: Add utility function - (with-atomic-json-file-replacement (lambda (pkg-meta-alist) - (map - (match-lambda - (("scripts" . scripts-alist) - (cons "scripts" (filter - (match-lambda - (("prepare" . _) #f) - (_ #t)) - scripts-alist))) - (other other)) - pkg-meta-alist))))) + (modify-json (delete-fields '(("scripts" "prepare")))))) (replace 'build (lambda* (#:key inputs native-inputs #:allow-other-keys) (let ((esbuild (search-input-file (or native-inputs inputs) @@ -136,38 +125,26 @@ (define-public node-addon-api (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies - `("benchmark" - "bindings" - "clang-format" - "eslint" - "eslint-config-semistandard" - "eslint-config-standard" - "eslint-plugin-import" - "eslint-plugin-node" - "eslint-plugin-promise" - "fs-extra" - "neostandard" - "path" - "pre-commit" - "semver")))) - (add-after 'unpack 'skip-js-tests - ;; We can't run the js-based tests, - ;; but we can still do the C++ parts - (lambda args - (define new-test-script - "echo stopping after pretest on Guix") - (with-atomic-json-file-replacement (lambda (pkg-meta-alist) - (map - (match-lambda - (("scripts" . scripts-alist) - (cons "scripts" (map - (match-lambda - (("test" . _) (cons "test" new-test-script)) - (other other)) - scripts-alist))) - (other other)) - pkg-meta-alist)))))))) + (modify-json + (delete-dependencies `( + "benchmark" + "bindings" + "clang-format" + "eslint" + "eslint-config-semistandard" + "eslint-config-standard" + "eslint-plugin-import" + "eslint-plugin-node" + "eslint-plugin-promise" + "fs-extra" + "neostandard" + "path" + "pre-commit" + "semver")) + ;; We can't run the js-based tests, + ;; but we can still do the C++ parts + (replace-fields (list (cons + "scripts.test" "echo stopping after pretest on Guix")))))= )))) (home-page "https://github.com/nodejs/node-addon-api") (synopsis "Node.js API (Node-API) header-only C++ wrappers") (description "This module contains header-only C++ wrapper classes whi= ch @@ -232,7 +209,7 @@ (define-public node-buffer-crc32 #:phases (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda _ - (delete-dependencies '("tap"))))))) + (modify-json (delete-dependencies '("tap")))))))) (home-page "https://github.com/brianloveswords/buffer-crc32") (synopsis "CRC32 implementation in Javascript") (description @@ -288,14 +265,15 @@ (define-public node-crx3 "minimist")))) (add-after 'patch-dependencies 'delete-dependencies (lambda _ - (delete-dependencies '("c8" - "docdash" - "eslint" - "eslint-plugin-jsdoc" - "jsdoc" - "tap-diff" - "tape" - "tape-catch"))))))) + (modify-json (delete-dependencies + '("c8" + "docdash" + "eslint" + "eslint-plugin-jsdoc" + "jsdoc" + "tap-diff" + "tape" + "tape-catch")))))))) (inputs (list node-minimist node-pbf node-yazl)) (home-page "https://github.com/ahwayakchih/crx3") (synopsis "Create CRXv3 browser extensions with Javascript") @@ -325,18 +303,19 @@ (define-public node-debug (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies `("brfs" - "browserify" - "coveralls" - "istanbul" - "karma" - "karma-browserify" - "karma-chrome-launcher" - "karma-mocha" - "mocha" - "mocha-lcov-reporter" - "xo" - "supports-color"))))) + (modify-json (delete-dependencies + `("brfs" + "browserify" + "coveralls" + "istanbul" + "karma" + "karma-browserify" + "karma-chrome-launcher" + "karma-mocha" + "mocha" + "mocha-lcov-reporter" + "xo" + "supports-color")))))) #:tests? #f)) (home-page "https://github.com/debug-js/debug") (synopsis "Debugging utility for Node.js") @@ -421,21 +400,22 @@ (define-public node-file-uri-to-path (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies `("@types/mocha" - "@types/node" - "@typescript-eslint/eslint-plugin" - "@typescript-eslint/parser" - "cpy-cli" - "eslint" - "eslint-config-airbnb" - "eslint-config-prettier" - "eslint-import-resolver-typescript" - "eslint-plugin-import" - "eslint-plugin-jsx-a11y" - "eslint-plugin-react" - "mocha" - "rimraf" - "typescript")))) + (modify-json (delete-dependencies + `("@types/mocha" + "@types/node" + "@typescript-eslint/eslint-plugin" + "@typescript-eslint/parser" + "cpy-cli" + "eslint" + "eslint-config-airbnb" + "eslint-config-prettier" + "eslint-import-resolver-typescript" + "eslint-plugin-import" + "eslint-plugin-jsx-a11y" + "eslint-plugin-react" + "mocha" + "rimraf" + "typescript"))))) (replace 'build (lambda* (#:key inputs native-inputs #:allow-other-keys) (copy-recursively "src" "dist") @@ -497,7 +477,8 @@ (define-public node-ieee754 #:phases (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda _ - (delete-dependencies '("airtap" "standard" "tape")))= )))) + (modify-json (delete-dependencies + '("airtap" "standard" "tape")))))))) (home-page "https://github.com/feross/ieee754") (synopsis "Read/write IEEE754 floating point numbers in Javascript") (description "This package can read and write IEEE754 floating point @@ -524,7 +505,7 @@ (define-public node-inherits (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies '("tap"))))) + (modify-json (delete-dependencies '("tap")))))) ;; FIXME: Tests depend on node-tap #:tests? #f)) (home-page "https://github.com/isaacs/inherits") @@ -553,8 +534,8 @@ (define-public node-irc (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies - `("ansi-color" "faucet" "jscs" "tape"))))) + (modify-json (delete-dependencies + `("ansi-color" "faucet" "jscs" "tape")))))) #:tests? #f)) (inputs (list node-irc-colors)) @@ -583,7 +564,7 @@ (define-public node-irc-colors (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies `("istanbul" "vows"))))) + (modify-json (delete-dependencies `("istanbul" "vows")))))) #:tests? #f)) (home-page "https://github.com/fent/irc-colors.js") (synopsis "Node.js module providing color and formatting for IRC") @@ -657,7 +638,8 @@ (define-public node-minimist #:phases (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda _ - (delete-dependencies '("covert" "tap" "tape"))))))) + (modify-json (delete-dependencies + '("covert" "tap" "tape")))))))) (home-page "https://github.com/substack/minimist") (synopsis "Parse CLI arguments in Javascript") (description "This package can scan for CLI flags and arguments in @@ -683,12 +665,13 @@ (define-public node-ms (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies `("eslint" - "expect.js" - "husky" - "lint-staged" - "mocha" - "prettier"))))) + (modify-json (delete-dependencies + `("eslint" + "expect.js" + "husky" + "lint-staged" + "mocha" + "prettier")))))) #:tests? #f)) (home-page "https://github.com/vercel/ms") (synopsis "Convert time to milliseconds") @@ -716,14 +699,14 @@ (define-public node-nan (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies + (modify-json (delete-dependencies '("bindings" "commander" "glob" "request" "node-gyp" ;; would be needed for tests "tap" - "xtend"))))) + "xtend")))))) ;; tests need tap and other dependencies #:tests? #f)) (inputs @@ -755,7 +738,8 @@ (define-public node-normalize-path #:phases (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda _ - (delete-dependencies '("gulp-format-md" "mocha")))))= )) + (modify-json (delete-dependencies + '("gulp-format-md" "mocha")))))))) (native-inputs (list node-minimist)) (home-page "https://github.com/jonschlinkert/normalize-path") (synopsis "Normalize slashes in a file path") @@ -784,7 +768,7 @@ (define-public node-once (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies '("tap"))))) + (modify-json (delete-dependencies '("tap")))))) ;; FIXME: Tests depend on node-tap #:tests? #f)) (inputs @@ -841,7 +825,8 @@ (define-public node-path-key #:phases (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda _ - (delete-dependencies '("@types/node" "ava" "tsd" "xo"))))))) + (modify-json (delete-dependencies + '("@types/node" "ava" "tsd" "xo")))))))) (home-page "https://github.com/sindresorhus/path-key") (synopsis "Cross-platform utility to compute the PATH environment variable key") (description "@code{path-key} provides an implementation to compute th= e @@ -867,7 +852,7 @@ (define-public node-pbf #:phases (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda _ - (delete-dependencies + (modify-json (delete-dependencies '("benchmark" "browserify" "eslint" @@ -877,7 +862,7 @@ (define-public node-pbf "protocol-buffers" "tap" "tile-stats-runner" - "uglify-js"))))))) + "uglify-js")))))))) (inputs (list node-ieee754 node-resolve-protobuf-schema)) (home-page "https://github.com/mapbox/pbf") (synopsis "Decode and encode protocol buffers in Javascript") @@ -908,7 +893,8 @@ (define-public node-protocol-buffers-schema #:phases (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda _ - (delete-dependencies '("standard" "tape"))))))) + (modify-json (delete-dependencies + '("standard" "tape")))))))) (home-page "https://github.com/mafintosh/protocol-buffers-schema") (synopsis "Protocol buffers schema parser written in Javascript") (description "This package provides a protocol buffers schema parser @@ -935,26 +921,27 @@ (define-public node-readable-stream (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies `("@babel/cli" - "@babel/core" - "@babel/polyfill" - "@babel/preset-env" - "airtap" - "assert" - "bl" - "deep-strict-equal" - "events.once" - "glob" - "gunzip-maybe" - "hyperquest" - "lolex" - "nyc" - "pump" - "rimraf" - "tap" - "tape" - "tar-fs" - "util-promisify"))))) + (modify-json (delete-dependencies + `("@babel/cli" + "@babel/core" + "@babel/polyfill" + "@babel/preset-env" + "airtap" + "assert" + "bl" + "deep-strict-equal" + "events.once" + "glob" + "gunzip-maybe" + "hyperquest" + "lolex" + "nyc" + "pump" + "rimraf" + "tap" + "tape" + "tar-fs" + "util-promisify")))))) #:tests? #f)) (inputs (list node-util-deprecate node-string-decoder node-inherits)) (home-page "https://github.com/nodejs/readable-stream") @@ -983,7 +970,8 @@ (define-public node-resolve-protobuf-schema #:phases (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda _ - (delete-dependencies '("standard" "tape"))))))) + (modify-json (delete-dependencies + '("standard" "tape")))))))) (inputs (list node-protocol-buffers-schema)) (home-page "https://github.com/mafintosh/resolve-protobuf-schema") (synopsis "Resolve protobuf imports") @@ -1012,7 +1000,7 @@ (define-public node-safe-buffer (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies '("tape" "standard"))))) + (modify-json (delete-dependencies '("tape" "standard")))))) #:tests? #f)) (home-page "https://github.com/feross/safe-buffer") (synopsis "Buffer creation with explicit semantics") @@ -1040,20 +1028,21 @@ (define-public node-safe-stable-stringify #:phases (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda _ - (delete-dependencies '("benchmark" "clone" - "fast-json-stable-stringify" - "fast-safe-stringify" - "fast-stable-stringify" - "faster-stable-stringify" - "fastest-stable-stringify" - "json-stable-stringify" - "json-stringify-deterministic= " - "json-stringify-safe" - "standard" - "tap" - "typescript" - "@types/node" - "@types/json-stable-stringify"))))))) + (modify-json (delete-dependencies + '("benchmark" "clone" + "fast-json-stable-stringify" + "fast-safe-stringify" + "fast-stable-stringify" + "faster-stable-stringify" + "fastest-stable-stringify" + "json-stable-stringify" + "json-stringify-deterministic" + "json-stringify-safe" + "standard" + "tap" + "typescript" + "@types/node" + "@types/json-stable-stringify")))))))) (home-page "https://github.com/BridgeAR/safe-stable-stringify") (synopsis "Serialization of javascript objects") (description @@ -1111,7 +1100,7 @@ (define-public node-semver (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies '("tap"))))) + (modify-json (delete-dependencies '("tap")))))) ;; FIXME: Tests depend on node-tap #:tests? #f)) (home-page "https://github.com/npm/node-semver") @@ -1151,7 +1140,8 @@ (define-public node-serialport (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies `("@serialport/binding-mock")))) + (modify-json (delete-dependencies + `("@serialport/binding-mock"))))) (add-after 'unpack 'chdir (lambda args (chdir "packages/serialport")))) @@ -1210,25 +1200,10 @@ (define-public node-serialport-bindings (chdir "packages/bindings"))) (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies `("prebuild-install" - ;; devDependencies - "@serialport/binding-mock" - "node-abi")))) - (add-after 'chdir 'avoid-prebuild-install - (lambda args - (with-atomic-json-file-replacement (lambda (pkg-meta-alist) - (map - (match-lambda - (("scripts" . scripts-alist) - (cons "scripts" (filter - (match-lambda - (("install" . _) #f) - (_ #t)) - scripts-alist))) - (("gypfile" . _) - (cons "gypfile" #f)) - (other other)) - pkg-meta-alist)))))) + (modify-json + (delete-dependencies `( + ;; devDependencies + "node-abi")))))) #:tests? #f)) (synopsis "Abstract base class for Node SerialPort bindings") (description "Node SerialPort is a modular suite of Node.js packages f= or @@ -1409,8 +1384,9 @@ (define-public node-serialport-stream (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies `(;; devDependencies - "@serialport/binding-mock")))) + (modify-json + (delete-dependencies ;; devDependencies + `("@serialport/binding-mock"))))) (add-after 'unpack 'chdir (lambda args (chdir "packages/stream")))) @@ -1461,7 +1437,7 @@ (define-public node-sqlite3 (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies + (modify-json (delete-dependencies `(;; Normally, this is "built" using @mapbox/node-pre-gyp, ;; which publishes or downloads pre-built binaries or ;; falls back to building from source. Here, we patch out @@ -1480,7 +1456,7 @@ (define-public node-sqlite3 "node-gyp" ;; These we'd like, we just don't have them yet: "eslint" - "mocha")))) + "mocha"))))) (add-before 'configure 'npm-config-sqlite ;; We need this step even if we do replace @mapbox/node-pre-gyp ;; because the package expects to build its bundled sqlite @@ -1514,8 +1490,9 @@ (define-public node-sqlite3 (substitute* ".npmignore" (("lib/binding") "#lib/binding # <- patched for Guix")) - (with-atomic-json-file-replacement (lambda (pkg-meta-alist) - (let ((binary-alist (assoc-ref pkg-meta-alist "binary"))) + (modify-json + (lambda (pkg-meta-alist) + (let ((binary-alist (assoc-ref pkg-meta-alist "binary"))) ;; When it builds from source, node-pre-gyp supplies ;; module_name and module_path based on the entries under ;; "binary" from "package.json", so this package's @@ -1528,19 +1505,11 @@ (define-public node-sqlite3 (assoc-ref binary-alist "module_name") " module_path=3D" (assoc-ref binary-alist "module_path")))) + pkg-meta-alist) ;; We need to remove the install script from "package.json"= , ;; as it would try to use node-pre-gyp and would block the ;; automatic building performed by `npm install`. - (map - (match-lambda - (("scripts" . scripts-alist) - (cons "scripts" (filter - (match-lambda - (("install" . _) #f) - (_ #t)) - scripts-alist))) - (other other)) - pkg-meta-alist)))))))) + (delete-fields `(("scripts" "install"))))))))) (home-page "https://github.com/mapbox/node-sqlite3") (synopsis "Node.js bindings for SQLite3") (description @@ -1623,8 +1592,8 @@ (define-public node-string-decoder (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies - '("tap" "core-util-is" "babel-polyfill"))))) + (modify-json (delete-dependencies + '("tap" "core-util-is" "babel-polyfill")))))) ;; FIXME: Tests depend on node-tap #:tests? #f)) (inputs (list node-safe-buffer node-inherits)) @@ -1678,7 +1647,7 @@ (define-public node-wrappy (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies '("tap"))))))) + (modify-json (delete-dependencies '("tap")))))))) (home-page "https://github.com/npm/wrappy") (synopsis "Callback wrapping utility") (description "@code{wrappy} is a utility for Node.js to wrap callbacks= .") @@ -1703,7 +1672,8 @@ (define-public node-yazl #:phases (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda _ - (delete-dependencies '("airtap" "bl" "istanbul" "yauzl"))))))) + (modify-json (delete-dependencies + '("airtap" "bl" "istanbul" "yauzl")))))))) (inputs (list node-buffer-crc32)) (home-page "https://github.com/thejoshwolfe/yazl") (synopsis "Yet another zip library for node") diff --git a/gnu/packages/node.scm b/gnu/packages/node.scm index 20acffb3df..a13ec5d077 100644 --- a/gnu/packages/node.scm +++ b/gnu/packages/node.scm @@ -13,6 +13,7 @@ ;;; Copyright =C2=A9 2021, 2022 Philip McGrath <philip@HIDDEN> ;;; Copyright =C2=A9 2022 Hilton Chain <hako@HIDDEN> ;;; Copyright =C2=A9 2024 Efraim Flashner <efraim@HIDDEN> +;;; Copyright =C2=A9 2024 Daniel Khodabakhsh <d.khodabakhsh@HIDDEN> ;;; ;;; This file is part of GNU Guix. ;;; @@ -366,7 +367,7 @@ (define-public node-semver-bootstrap (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies '("tap"))))))) + (modify-json (delete-dependencies '("tap")))))))) (home-page "https://github.com/npm/node-semver") (properties '((hidden? . #t))) (synopsis "Parses semantic versions strings") @@ -397,11 +398,12 @@ (define-public node-ms-bootstrap (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies '("eslint" - "expect.js" - "husky" - "lint-staged" - "mocha"))))))) + (modify-json (delete-dependencies + '("eslint" + "expect.js" + "husky" + "lint-staged" + "mocha")))))))) (home-page "https://github.com/zeit/ms#readme") (properties '((hidden? . #t))) (synopsis "Tiny millisecond conversion utility") @@ -431,7 +433,7 @@ (define-public node-binary-search-bootstrap (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies `("chai" "mocha"))))))) + (modify-json (delete-dependencies `("chai" "mocha")))))))) (home-page "https://github.com/darkskyapp/binary-search#readme") (properties '((hidden? . #t))) (synopsis "Tiny binary search function with comparators") @@ -460,17 +462,18 @@ (define-public node-debug-bootstrap (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies `("brfs" - "browserify" - "coveralls" - "istanbul" - "karma" - "karma-browserify" - "karma-chrome-launcher" - "karma-mocha" - "mocha" - "mocha-lcov-reporter" - "xo"))))))) + (modify-json (delete-dependencies + `("brfs" + "browserify" + "coveralls" + "istanbul" + "karma" + "karma-browserify" + "karma-chrome-launcher" + "karma-mocha" + "mocha" + "mocha-lcov-reporter" + "xo")))))))) (inputs (list node-ms-bootstrap)) (home-page "https://github.com/visionmedia/debug#readme") (properties '((hidden? . #t))) @@ -526,12 +529,13 @@ (define-public node-llparse-builder-bootstrap (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda _ - (delete-dependencies `("@types/mocha" - "@types/node" - "mocha" - "ts-node" - "tslint" - "typescript")))) + (modify-json (delete-dependencies + `("@types/mocha" + "@types/node" + "mocha" + "ts-node" + "tslint" + "typescript"))))) (replace 'build (lambda* (#:key inputs #:allow-other-keys) (let ((esbuild (search-input-file inputs "/bin/esbuild"))) @@ -587,13 +591,14 @@ (define-public node-llparse-frontend-bootstrap (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies `("@types/debug" - "@types/mocha" - "@types/node" - "mocha" - "ts-node" - "tslint" - "typescript")))) + (modify-json (delete-dependencies + `("@types/debug" + "@types/mocha" + "@types/node" + "mocha" + "ts-node" + "tslint" + "typescript"))))) (replace 'build (lambda* (#:key inputs #:allow-other-keys) (let ((esbuild (search-input-file inputs "/bin/esbuild"))) @@ -648,15 +653,16 @@ (define-public node-llparse-bootstrap (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies `("@types/debug" - "@types/mocha" - "@types/node" - "esm" - "llparse-test-fixture" - "mocha" - "ts-node" - "tslint" - "typescript")))) + (modify-json (delete-dependencies + `("@types/debug" + "@types/mocha" + "@types/node" + "esm" + "llparse-test-fixture" + "mocha" + "ts-node" + "tslint" + "typescript"))))) (replace 'build (lambda* (#:key inputs #:allow-other-keys) (let ((esbuild (search-input-file inputs "/bin/esbuild"))) diff --git a/guix/build/node-build-system.scm b/guix/build/node-build-syste= m.scm index df7ea7774c..ea23d92a05 100644 --- a/guix/build/node-build-system.scm +++ b/guix/build/node-build-system.scm @@ -31,18 +31,14 @@ (define-module (guix build node-build-system) #:use-module (srfi srfi-1) #:use-module (srfi srfi-71) #:export (%standard-phases - with-atomic-json-file-replacement delete-dependencies - node-build)) - -(define* (with-atomic-json-file-replacement proc - #:optional (file "package.json")) - "Like 'with-atomic-file-replacement', but PROC is called with a single -argument---the result of parsing FILE's contents as json---and should a va= lue -to be written as json to the replacement FILE." - (with-atomic-file-replacement file - (lambda (in out) - (scm->json (proc (json->scm in)) out)))) + delete-dev-dependencies + delete-fields + modify-json + modify-json-fields + node-build + replace-fields + with-atomic-json-file-replacement)) (define* (assoc-ref* alist key #:optional default) "Like assoc-ref, but return DEFAULT instead of #f if no value exists." @@ -72,6 +68,161 @@ (define* (alist-update alist key proc #:optional (=3D e= qual?)) (acons key (proc (cdr pair)) rest) alist))) +;;; +;;; package.json modification procedures +;;; + +(define* (with-atomic-json-file-replacement proc + #:optional (file "package.json")) + "Like 'with-atomic-file-replacement', but PROC is called with a single +argument---the result of parsing FILE's contents as json---and should a va= lue +to be written as json to the replacement FILE." + (with-atomic-file-replacement file + (lambda (in out) + (scm->json (proc (json->scm in)) out)))) + +(define* (modify-json #:key (file "package.json") #:rest all-arguments) + "Provide package.json modifying callbacks such as (delete-dependencies .= ..)" + (let + ( + (modifications + (let loop ((arguments all-arguments)) + (cond + ((null? arguments) '()) + ((keyword? (car arguments)) (loop (cddr arguments))) + (else (cons (car arguments) (loop (cdr arguments)))))))) + (with-atomic-json-file-replacement + (lambda (package) + (fold + (lambda (modification package) + (modification package)) + package + modifications)) + file))) + +(define (delete-dependencies dependencies-to-remove) + "Rewrite 'package.json' to allow the build to proceed without packages +listed in 'dependencies-to-remove', a list of strings naming npm packages. + +To prevent the deleted dependencies from being reintroduced, use this func= tion +only after the 'patch-dependencies' phase." + (lambda (pkg-meta) + (fold + (lambda (dependency-key pkg-meta) + (alist-update + pkg-meta + dependency-key + (lambda (dependencies) + (remove + (lambda (dependency) + (member (car dependency) dependencies-to-remove)) + dependencies)))) + pkg-meta + (list + "devDependencies" + "dependencies" + "peerDependencies" + "optionalDependencies")))) + +(define* (modify-json-fields + fields + field-modifier + #:key + (field-path-mapper (lambda (field) field)) + (insert? #f) + (strict? #t)) + "Provides a lambda to supply to modify-json which modifies the specified + json file. +- `fields` is a list procedure-specific data structures which should inclu= de + the definition of a `field-path` in one of two syntaxes: dot-syntax strin= g + such as `\"devDependencies.esbuild\"`, or a list of strings such as + `(list \"devDependencies\" \"esbuild\")`. +- `field-modifier` is a lambda which is invoked at the position of the fie= ld. + It is supplied with the current field definition, the association list (a= list) + at the field location in the json file, and the field name, also called `= key`. +- `field-path-mapper` is a lambda which instructs where the field-path is + located within the field structure. +- `insert?` allows the creation of the field and any missing intermediate + fields. +- `strict?` causes an error to be thrown if the exact field-path is not fo= und + in the data" + (lambda (package) + (fold + (lambda (field package) + (let* + ( + (field-path (field-path-mapper field)) + ( + field-path + (cond + ((string? field-path) + (string-split field-path #\.)) + ((and (list? field-path) (every string? field-path)) + field-path) + (else + (error + (string-append + "Invalid field value provided, expecting a string or= a " + "list of string but instead got: " + (with-output-to-string (lambda _ (display field-path)))))) + ))) + (let loop + ( + (data package) + (field-path field-path)) + (let* + ( + (key (car field-path)) + (data + (if (and (not (assoc key data)) insert?) + (acons key '() data) + data))) + (if (not (assoc key data)) + (if strict? + (error (string-append + "Key '" key "' was not found in data: " + (with-output-to-string (lambda _ (display data))))) + data) + (if (=3D (length field-path) 1) + (field-modifier field data key) + (assoc-set! + data + key + (loop (assoc-ref data key) (cdr field-path))))))))) + package + fields))) + +(define* (delete-fields fields #:key (strict? #t)) + "Provides a lambda to supply to modify-json which deletes the specified + `fields` which is a list of field-paths as mentioned in `modify-json-fiel= ds`. + Examples: + (delete-fields '( + (\"path\" \"to\" \"field\") + \"path.to.other.field\"))" + (modify-json-fields + fields + (lambda (_ data key) + (assoc-remove! data key)) + #:strict? strict?)) + +(define* (replace-fields fields #:key (strict? #t)) + "Provides a lambda to supply to modify-json which replaces the value of = the + supplied field. `fields` is a list of pairs, where the first element is t= he + field-path and the second element is the value to replace the target with= . + Examples: + (replace-fields '( + ((\"path\" \"to\" \"field\") \"new field value\") + (\"path.to.other.field\" \"new field value\")))" + (modify-json-fields + fields + (lambda (field data key) + (assoc-set! data key (cdr field))) + #:field-path-mapper (lambda (field) (car field)) + #:strict? strict?)) + +(define (delete-dev-dependencies) + (delete-fields (list "devDependencies") #:strict #f)) + ;;; ;;; Phases. ;;; @@ -144,31 +295,6 @@ (define* (patch-dependencies #:key inputs #:allow-other-keys) (assoc-ref* pkg-meta "dependencies" '()))))))))) #t) -(define (delete-dependencies dependencies-to-remove) - "Rewrite 'package.json' to allow the build to proceed without packages -listed in 'dependencies-to-remove', a list of strings naming npm packages. - -To prevent the deleted dependencies from being reintroduced, use this func= tion -only after the 'patch-dependencies' phase." - (with-atomic-json-file-replacement - (lambda (pkg-meta) - (fold - (lambda (dependency-key pkg-meta) - (alist-update - pkg-meta - dependency-key - (lambda (dependencies) - (remove - (lambda (dependency) - (member (car dependency) dependencies-to-remove)) - dependencies)))) - pkg-meta - (list - "devDependencies" - "dependencies" - "peerDependencies" - "optionalDependencies"))))) - (define* (delete-lockfiles #:key inputs #:allow-other-keys) "Delete 'package-lock.json', 'yarn.lock', and 'npm-shrinkwrap.json', if = they exist." --=20 2.46.0 --000000000000e12ff3062a6fccd4 Content-Type: text/x-patch; charset="UTF-8"; name="0002-Introduce-modify-json-delete-fields-and-replace-fields.patch" Content-Disposition: attachment; filename="0002-Introduce-modify-json-delete-fields-and-replace-fields.patch" Content-Transfer-Encoding: base64 Content-ID: <f_m5a5il660> X-Attachment-Id: f_m5a5il660 RnJvbSBhYzU0NDMzYThhYWU0Y2Q2ZTZjNjYwMjYzNTAzYjk2NjYwYTM1ZmE4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpNZXNzYWdlLUlEOiA8YWM1NDQzM2E4YWFlNGNkNmU2YzY2MDI2MzUwM2I5 NjY2MGEzNWZhOC4xNzM1NDk4MTgzLmdpdC5kLmtob2RhYmFraHNoQGdtYWlsLmNvbT4KSW4tUmVw bHktVG86IDxlNGVhN2I4OGNlMzliMWY1YjI0ODE4MTc0ZjJlNWMxNzQyNGYzYWRjLjE3MzU0OTgx ODMuZ2l0LmQua2hvZGFiYWtoc2hAZ21haWwuY29tPgpSZWZlcmVuY2VzOiA8ZTRlYTdiODhjZTM5 YjFmNWIyNDgxODE3NGYyZTVjMTc0MjRmM2FkYy4xNzM1NDk4MTgzLmdpdC5kLmtob2RhYmFraHNo QGdtYWlsLmNvbT4KRnJvbTogRGFuaWVsIEtob2RhYmFraHNoIDxkLmtob2RhYmFraHNoQGdtYWls LmNvbT4KRGF0ZTogU3VuLCAyOSBEZWMgMjAyNCAxMDoyNDoyMyAtMDgwMApTdWJqZWN0OiBbUEFU Q0ggMi8yXSBJbnRyb2R1Y2UgKG1vZGlmeS1qc29uKSwgKGRlbGV0ZS1maWVsZHMpLCBhbmQKIChy ZXBsYWNlLWZpZWxkcykgdG8gbm9kZS1idWlsZC1zeXN0ZW0KClRoaXMgY2hhbmdlIGludHJvZHVj ZXMgaGVscGVyIHByb2NlZHVyZXMgKG1vZGlmeS1qc29uKSB3aGljaCB0YWtlcyBpbiBsYW1iZGFz CiB3aGljaCBtb2RpZnkgdGhlIHRhcmdldCBqc29uICM6ZmlsZSB3aGljaCBkZWZhdWx0cyB0byBw YWNrYWdlLmpzb24KVGhpcyBjaGFuZ2UgYWxzbyBpbmNsdWRlcyAoZGVsZXRlLWZpZWxkcykgYW5k IChyZXBsYWNlLWZpZWxkcykgdG8gaGVscCBkZWxldGluZwogYW5kIHJlcGxhY2luZyB0aGUgdmFs dWUgb2YgZmllbGRzIGluIGEgcGFja2FnZS5qc29uIGZpbGUuCgpTaWduZWQtb2ZmLWJ5OiBEYW5p ZWwgS2hvZGFiYWtoc2ggPGQua2hvZGFiYWtoc2hAZ21haWwuY29tPgpDaGFuZ2UtSWQ6IEk5NTdm N2NhODE0MDc4ZDIxMzZkNTI2MTk4NTE3NDgyMDIzNWYxMzY5Ci0tLQogZ251L3BhY2thZ2VzL25v ZGUteHl6LnNjbSAgICAgICAgfCAzMjQgKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQog Z251L3BhY2thZ2VzL25vZGUuc2NtICAgICAgICAgICAgfCAgODYgKysrKy0tLS0KIGd1aXgvYnVp bGQvbm9kZS1idWlsZC1zeXN0ZW0uc2NtIHwgMTk4ICsrKysrKysrKysrKysrKy0tLS0KIDMgZmls ZXMgY2hhbmdlZCwgMzU1IGluc2VydGlvbnMoKyksIDI1MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9nbnUvcGFja2FnZXMvbm9kZS14eXouc2NtIGIvZ251L3BhY2thZ2VzL25vZGUteHl6LnNj bQppbmRleCBlYzNmOWZiZmIxLi5jZGM2OWRlMGMxIDEwMDY0NAotLS0gYS9nbnUvcGFja2FnZXMv bm9kZS14eXouc2NtCisrKyBiL2dudS9wYWNrYWdlcy9ub2RlLXh5ei5zY20KQEAgLTY5LDE4ICs2 OSw3IEBAIChkZWZpbmUtcHVibGljIG5vZGUtYWNvcm4KICAgICAgICAgICAgICA7OyBXZSBuZWVk IHRvIHJlbW92ZSB0aGUgcHJlcGFyZSBzY3JpcHQgZnJvbSAicGFja2FnZS5qc29uIiwgYXMKICAg ICAgICAgICAgICA7OyBpdCB3b3VsZCB0cnkgdG8gdXNlIHRoZSBidWlsZCBlbnZpcm9ubWVudCBh bmQgd291bGQgYmxvY2sgdGhlCiAgICAgICAgICAgICAgOzsgYXV0b21hdGljIGJ1aWxkaW5nIGJ5 IG90aGVyIHBhY2thZ2VzIG1ha2luZyB1c2Ugb2Ygbm9kZS1hY29ybi4KLSAgICAgICAgICAgICA7 OyBUT0RPOiBBZGQgdXRpbGl0eSBmdW5jdGlvbgotICAgICAgICAgICAgICh3aXRoLWF0b21pYy1q c29uLWZpbGUtcmVwbGFjZW1lbnQgKGxhbWJkYSAocGtnLW1ldGEtYWxpc3QpCi0gICAgICAgICAg ICAgICAobWFwCi0gICAgICAgICAgICAgICAgIChtYXRjaC1sYW1iZGEKLSAgICAgICAgICAgICAg ICAgICAoKCJzY3JpcHRzIiAuIHNjcmlwdHMtYWxpc3QpCi0gICAgICAgICAgICAgICAgICAgICAo Y29ucyAic2NyaXB0cyIgKGZpbHRlcgotICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2gtbGFt YmRhCi0gICAgICAgICAgICAgICAgICAgICAgICAgKCgicHJlcGFyZSIgLiBfKSAjZikKLSAgICAg ICAgICAgICAgICAgICAgICAgICAoXyAjdCkpCi0gICAgICAgICAgICAgICAgICAgICAgIHNjcmlw dHMtYWxpc3QpKSkKLSAgICAgICAgICAgICAgICAgICAob3RoZXIgb3RoZXIpKQotICAgICAgICAg ICAgICAgICBwa2ctbWV0YS1hbGlzdCkpKSkpCisgICAgICAgICAgICAgKG1vZGlmeS1qc29uIChk ZWxldGUtZmllbGRzICcoKCJzY3JpcHRzIiAicHJlcGFyZSIpKSkpKSkKICAgICAgICAgIChyZXBs YWNlICdidWlsZAogICAgICAgICAgICAobGFtYmRhKiAoIzprZXkgaW5wdXRzIG5hdGl2ZS1pbnB1 dHMgIzphbGxvdy1vdGhlci1rZXlzKQogICAgICAgICAgICAgIChsZXQgKChlc2J1aWxkIChzZWFy Y2gtaW5wdXQtZmlsZSAob3IgbmF0aXZlLWlucHV0cyBpbnB1dHMpCkBAIC0xMzYsMzggKzEyNSwy NiBAQCAoZGVmaW5lLXB1YmxpYyBub2RlLWFkZG9uLWFwaQogICAgICAgIChtb2RpZnktcGhhc2Vz ICVzdGFuZGFyZC1waGFzZXMKICAgICAgICAgIChhZGQtYWZ0ZXIgJ3BhdGNoLWRlcGVuZGVuY2ll cyAnZGVsZXRlLWRlcGVuZGVuY2llcwogICAgICAgICAgICAobGFtYmRhIGFyZ3MKLSAgICAgICAg ICAgICAoZGVsZXRlLWRlcGVuZGVuY2llcwotICAgICAgICAgICAgICBgKCJiZW5jaG1hcmsiCi0g ICAgICAgICAgICAgICAgImJpbmRpbmdzIgotICAgICAgICAgICAgICAgICJjbGFuZy1mb3JtYXQi Ci0gICAgICAgICAgICAgICAgImVzbGludCIKLSAgICAgICAgICAgICAgICAiZXNsaW50LWNvbmZp Zy1zZW1pc3RhbmRhcmQiCi0gICAgICAgICAgICAgICAgImVzbGludC1jb25maWctc3RhbmRhcmQi Ci0gICAgICAgICAgICAgICAgImVzbGludC1wbHVnaW4taW1wb3J0IgotICAgICAgICAgICAgICAg ICJlc2xpbnQtcGx1Z2luLW5vZGUiCi0gICAgICAgICAgICAgICAgImVzbGludC1wbHVnaW4tcHJv bWlzZSIKLSAgICAgICAgICAgICAgICAiZnMtZXh0cmEiCi0gICAgICAgICAgICAgICAgIm5lb3N0 YW5kYXJkIgotICAgICAgICAgICAgICAgICJwYXRoIgotICAgICAgICAgICAgICAgICJwcmUtY29t bWl0IgotICAgICAgICAgICAgICAgICJzZW12ZXIiKSkpKQotICAgICAgICAgKGFkZC1hZnRlciAn dW5wYWNrICdza2lwLWpzLXRlc3RzCi0gICAgICAgICAgIDs7IFdlIGNhbid0IHJ1biB0aGUganMt YmFzZWQgdGVzdHMsCi0gICAgICAgICAgIDs7IGJ1dCB3ZSBjYW4gc3RpbGwgZG8gdGhlIEMrKyBw YXJ0cwotICAgICAgICAgICAobGFtYmRhIGFyZ3MKLSAgICAgICAgICAgICAoZGVmaW5lIG5ldy10 ZXN0LXNjcmlwdAotICAgICAgICAgICAgICAgImVjaG8gc3RvcHBpbmcgYWZ0ZXIgcHJldGVzdCBv biBHdWl4IikKLSAgICAgICAgICAgICAod2l0aC1hdG9taWMtanNvbi1maWxlLXJlcGxhY2VtZW50 IChsYW1iZGEgKHBrZy1tZXRhLWFsaXN0KQotICAgICAgICAgICAgICAgKG1hcAotICAgICAgICAg ICAgICAgICAobWF0Y2gtbGFtYmRhCi0gICAgICAgICAgICAgICAgICAgKCgic2NyaXB0cyIgLiBz Y3JpcHRzLWFsaXN0KQotICAgICAgICAgICAgICAgICAgICAgKGNvbnMgInNjcmlwdHMiIChtYXAK LSAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoLWxhbWJkYQotICAgICAgICAgICAgICAgICAg ICAgICAgICgoInRlc3QiIC4gXykgKGNvbnMgInRlc3QiIG5ldy10ZXN0LXNjcmlwdCkpCi0gICAg ICAgICAgICAgICAgICAgICAgICAgKG90aGVyIG90aGVyKSkKLSAgICAgICAgICAgICAgICAgICAg ICAgc2NyaXB0cy1hbGlzdCkpKQotICAgICAgICAgICAgICAgICAgIChvdGhlciBvdGhlcikpCi0g ICAgICAgICAgICAgICAgIHBrZy1tZXRhLWFsaXN0KSkpKSkpKSkKKyAgICAgICAgICAgICAobW9k aWZ5LWpzb24KKyAgICAgICAgICAgICAgIChkZWxldGUtZGVwZW5kZW5jaWVzIGAoCisgICAgICAg ICAgICAgICAgICJiZW5jaG1hcmsiCisgICAgICAgICAgICAgICAgICJiaW5kaW5ncyIKKyAgICAg ICAgICAgICAgICAgImNsYW5nLWZvcm1hdCIKKyAgICAgICAgICAgICAgICAgImVzbGludCIKKyAg ICAgICAgICAgICAgICAgImVzbGludC1jb25maWctc2VtaXN0YW5kYXJkIgorICAgICAgICAgICAg ICAgICAiZXNsaW50LWNvbmZpZy1zdGFuZGFyZCIKKyAgICAgICAgICAgICAgICAgImVzbGludC1w bHVnaW4taW1wb3J0IgorICAgICAgICAgICAgICAgICAiZXNsaW50LXBsdWdpbi1ub2RlIgorICAg ICAgICAgICAgICAgICAiZXNsaW50LXBsdWdpbi1wcm9taXNlIgorICAgICAgICAgICAgICAgICAi ZnMtZXh0cmEiCisgICAgICAgICAgICAgICAgICJuZW9zdGFuZGFyZCIKKyAgICAgICAgICAgICAg ICAgInBhdGgiCisgICAgICAgICAgICAgICAgICJwcmUtY29tbWl0IgorICAgICAgICAgICAgICAg ICAic2VtdmVyIikpCisgICAgICAgICAgICAgICA7OyBXZSBjYW4ndCBydW4gdGhlIGpzLWJhc2Vk IHRlc3RzLAorICAgICAgICAgICAgICAgOzsgYnV0IHdlIGNhbiBzdGlsbCBkbyB0aGUgQysrIHBh cnRzCisgICAgICAgICAgICAgICAocmVwbGFjZS1maWVsZHMgKGxpc3QgKGNvbnMKKyAgICAgICAg ICAgICAgICAgInNjcmlwdHMudGVzdCIgImVjaG8gc3RvcHBpbmcgYWZ0ZXIgcHJldGVzdCBvbiBH dWl4IikpKSkpKSkpKQogICAgIChob21lLXBhZ2UgImh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMv bm9kZS1hZGRvbi1hcGkiKQogICAgIChzeW5vcHNpcyAiTm9kZS5qcyBBUEkgKE5vZGUtQVBJKSBo ZWFkZXItb25seSBDKysgd3JhcHBlcnMiKQogICAgIChkZXNjcmlwdGlvbiAiVGhpcyBtb2R1bGUg Y29udGFpbnMgaGVhZGVyLW9ubHkgQysrIHdyYXBwZXIgY2xhc3NlcyB3aGljaApAQCAtMjMyLDcg KzIwOSw3IEBAIChkZWZpbmUtcHVibGljIG5vZGUtYnVmZmVyLWNyYzMyCiAgICAgICAgIzpwaGFz ZXMgKG1vZGlmeS1waGFzZXMgJXN0YW5kYXJkLXBoYXNlcwogICAgICAgICAgICAgICAgICAgKGFk ZC1hZnRlciAncGF0Y2gtZGVwZW5kZW5jaWVzICdkZWxldGUtZGVwZW5kZW5jaWVzCiAgICAgICAg ICAgICAgICAgICAgIChsYW1iZGEgXwotICAgICAgICAgICAgICAgICAgICAgIChkZWxldGUtZGVw ZW5kZW5jaWVzICcoInRhcCIpKSkpKSkpCisgICAgICAgICAgICAgICAgICAgICAgKG1vZGlmeS1q c29uIChkZWxldGUtZGVwZW5kZW5jaWVzICcoInRhcCIpKSkpKSkpKQogICAgIChob21lLXBhZ2Ug Imh0dHBzOi8vZ2l0aHViLmNvbS9icmlhbmxvdmVzd29yZHMvYnVmZmVyLWNyYzMyIikKICAgICAo c3lub3BzaXMgIkNSQzMyIGltcGxlbWVudGF0aW9uIGluIEphdmFzY3JpcHQiKQogICAgIChkZXNj cmlwdGlvbgpAQCAtMjg4LDE0ICsyNjUsMTUgQEAgKGRlZmluZS1wdWJsaWMgbm9kZS1jcngzCiAg ICAgICAgICAgICAgICAgICAgICAgICAgIm1pbmltaXN0IikpKSkKICAgICAgICAgICAgICAgICAg IChhZGQtYWZ0ZXIgJ3BhdGNoLWRlcGVuZGVuY2llcyAnZGVsZXRlLWRlcGVuZGVuY2llcwogICAg ICAgICAgICAgICAgICAgICAobGFtYmRhIF8KLSAgICAgICAgICAgICAgICAgICAgICAoZGVsZXRl LWRlcGVuZGVuY2llcyAnKCJjOCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJkb2NkYXNoIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgImVzbGludCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJlc2xpbnQtcGx1Z2luLWpzZG9jIgotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgImpzZG9jIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgInRhcC1kaWZmIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgInRhcGUiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAidGFwZS1jYXRjaCIpKSkpKSkpCisgICAgICAgICAgICAgICAgICAgICAgKG1v ZGlmeS1qc29uIChkZWxldGUtZGVwZW5kZW5jaWVzCisgICAgICAgICAgICAgICAgICAgICAgICAn KCJjOCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImRvY2Rhc2giCisgICAgICAgICAgICAg ICAgICAgICAgICAgICJlc2xpbnQiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJlc2xpbnQt cGx1Z2luLWpzZG9jIgorICAgICAgICAgICAgICAgICAgICAgICAgICAianNkb2MiCisgICAgICAg ICAgICAgICAgICAgICAgICAgICJ0YXAtZGlmZiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg InRhcGUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJ0YXBlLWNhdGNoIikpKSkpKSkpCiAg ICAgKGlucHV0cyAobGlzdCBub2RlLW1pbmltaXN0IG5vZGUtcGJmIG5vZGUteWF6bCkpCiAgICAg KGhvbWUtcGFnZSAiaHR0cHM6Ly9naXRodWIuY29tL2Fod2F5YWtjaGloL2NyeDMiKQogICAgIChz eW5vcHNpcyAiQ3JlYXRlIENSWHYzIGJyb3dzZXIgZXh0ZW5zaW9ucyB3aXRoIEphdmFzY3JpcHQi KQpAQCAtMzI1LDE4ICszMDMsMTkgQEAgKGRlZmluZS1wdWJsaWMgbm9kZS1kZWJ1ZwogICAgICAg IChtb2RpZnktcGhhc2VzICVzdGFuZGFyZC1waGFzZXMKICAgICAgICAgIChhZGQtYWZ0ZXIgJ3Bh dGNoLWRlcGVuZGVuY2llcyAnZGVsZXRlLWRlcGVuZGVuY2llcwogICAgICAgICAgICAobGFtYmRh IGFyZ3MKLSAgICAgICAgICAgICAoZGVsZXRlLWRlcGVuZGVuY2llcyBgKCJicmZzIgotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJyb3dzZXJpZnkiCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAiY292ZXJhbGxzIgotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgImlzdGFuYnVsIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgImthcm1hIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImthcm1h LWJyb3dzZXJpZnkiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAia2FybWEt Y2hyb21lLWxhdW5jaGVyIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImth cm1hLW1vY2hhIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vY2hhIgot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vY2hhLWxjb3YtcmVwb3J0ZXIi Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieG8iCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAic3VwcG9ydHMtY29sb3IiKSkpKSkKKyAgICAgICAgICAg ICAobW9kaWZ5LWpzb24gKGRlbGV0ZS1kZXBlbmRlbmNpZXMKKyAgICAgICAgICAgICAgIGAoImJy ZnMiCisgICAgICAgICAgICAgICAgICJicm93c2VyaWZ5IgorICAgICAgICAgICAgICAgICAiY292 ZXJhbGxzIgorICAgICAgICAgICAgICAgICAiaXN0YW5idWwiCisgICAgICAgICAgICAgICAgICJr YXJtYSIKKyAgICAgICAgICAgICAgICAgImthcm1hLWJyb3dzZXJpZnkiCisgICAgICAgICAgICAg ICAgICJrYXJtYS1jaHJvbWUtbGF1bmNoZXIiCisgICAgICAgICAgICAgICAgICJrYXJtYS1tb2No YSIKKyAgICAgICAgICAgICAgICAgIm1vY2hhIgorICAgICAgICAgICAgICAgICAibW9jaGEtbGNv di1yZXBvcnRlciIKKyAgICAgICAgICAgICAgICAgInhvIgorICAgICAgICAgICAgICAgICAic3Vw cG9ydHMtY29sb3IiKSkpKSkpCiAgICAgICAgIzp0ZXN0cz8gI2YpKQogICAgIChob21lLXBhZ2Ug Imh0dHBzOi8vZ2l0aHViLmNvbS9kZWJ1Zy1qcy9kZWJ1ZyIpCiAgICAgKHN5bm9wc2lzICJEZWJ1 Z2dpbmcgdXRpbGl0eSBmb3IgTm9kZS5qcyIpCkBAIC00MjEsMjEgKzQwMCwyMiBAQCAoZGVmaW5l LXB1YmxpYyBub2RlLWZpbGUtdXJpLXRvLXBhdGgKICAgICAgICAobW9kaWZ5LXBoYXNlcyAlc3Rh bmRhcmQtcGhhc2VzCiAgICAgICAgICAoYWRkLWFmdGVyICdwYXRjaC1kZXBlbmRlbmNpZXMgJ2Rl bGV0ZS1kZXBlbmRlbmNpZXMKICAgICAgICAgICAgKGxhbWJkYSBhcmdzCi0gICAgICAgICAgICAg KGRlbGV0ZS1kZXBlbmRlbmNpZXMgYCgiQHR5cGVzL21vY2hhIgotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIkB0eXBlcy9ub2RlIgotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIkB0eXBlc2NyaXB0LWVzbGludC9lc2xpbnQtcGx1Z2luIgotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIkB0eXBlc2NyaXB0LWVzbGludC9wYXJzZXIiCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY3B5LWNsaSIKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJlc2xpbnQiCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiZXNsaW50LWNvbmZpZy1haXJibmIiCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiZXNsaW50LWNvbmZpZy1wcmV0dGllciIKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJlc2xpbnQtaW1wb3J0LXJlc29sdmVyLXR5cGVzY3JpcHQi Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXNsaW50LXBsdWdpbi1pbXBv cnQiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXNsaW50LXBsdWdpbi1q c3gtYTExeSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlc2xpbnQtcGx1 Z2luLXJlYWN0IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vY2hhIgot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJpbXJhZiIKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlc2NyaXB0IikpKSkKKyAgICAgICAgICAgICAo bW9kaWZ5LWpzb24gKGRlbGV0ZS1kZXBlbmRlbmNpZXMKKyAgICAgICAgICAgICAgIGAoIkB0eXBl cy9tb2NoYSIKKyAgICAgICAgICAgICAgICAgIkB0eXBlcy9ub2RlIgorICAgICAgICAgICAgICAg ICAiQHR5cGVzY3JpcHQtZXNsaW50L2VzbGludC1wbHVnaW4iCisgICAgICAgICAgICAgICAgICJA dHlwZXNjcmlwdC1lc2xpbnQvcGFyc2VyIgorICAgICAgICAgICAgICAgICAiY3B5LWNsaSIKKyAg ICAgICAgICAgICAgICAgImVzbGludCIKKyAgICAgICAgICAgICAgICAgImVzbGludC1jb25maWct YWlyYm5iIgorICAgICAgICAgICAgICAgICAiZXNsaW50LWNvbmZpZy1wcmV0dGllciIKKyAgICAg ICAgICAgICAgICAgImVzbGludC1pbXBvcnQtcmVzb2x2ZXItdHlwZXNjcmlwdCIKKyAgICAgICAg ICAgICAgICAgImVzbGludC1wbHVnaW4taW1wb3J0IgorICAgICAgICAgICAgICAgICAiZXNsaW50 LXBsdWdpbi1qc3gtYTExeSIKKyAgICAgICAgICAgICAgICAgImVzbGludC1wbHVnaW4tcmVhY3Qi CisgICAgICAgICAgICAgICAgICJtb2NoYSIKKyAgICAgICAgICAgICAgICAgInJpbXJhZiIKKyAg ICAgICAgICAgICAgICAgInR5cGVzY3JpcHQiKSkpKSkKICAgICAgICAgIChyZXBsYWNlICdidWls ZAogICAgICAgICAgICAobGFtYmRhKiAoIzprZXkgaW5wdXRzIG5hdGl2ZS1pbnB1dHMgIzphbGxv dy1vdGhlci1rZXlzKQogICAgICAgICAgICAgIChjb3B5LXJlY3Vyc2l2ZWx5ICJzcmMiICJkaXN0 IikKQEAgLTQ5Nyw3ICs0NzcsOCBAQCAoZGVmaW5lLXB1YmxpYyBub2RlLWllZWU3NTQKICAgICAg ICAjOnBoYXNlcyAobW9kaWZ5LXBoYXNlcyAlc3RhbmRhcmQtcGhhc2VzCiAgICAgICAgICAgICAg ICAgICAoYWRkLWFmdGVyICdwYXRjaC1kZXBlbmRlbmNpZXMgJ2RlbGV0ZS1kZXBlbmRlbmNpZXMK ICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSBfCi0gICAgICAgICAgICAgICAgICAgICAgKGRl bGV0ZS1kZXBlbmRlbmNpZXMgJygiYWlydGFwIiAic3RhbmRhcmQiICJ0YXBlIikpKSkpKSkKKyAg ICAgICAgICAgICAgICAgICAgICAobW9kaWZ5LWpzb24gKGRlbGV0ZS1kZXBlbmRlbmNpZXMKKyAg ICAgICAgICAgICAgICAgICAgICAgICcoImFpcnRhcCIgInN0YW5kYXJkIiAidGFwZSIpKSkpKSkp KQogICAgIChob21lLXBhZ2UgImh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvaWVlZTc1NCIpCiAg ICAgKHN5bm9wc2lzICJSZWFkL3dyaXRlIElFRUU3NTQgZmxvYXRpbmcgcG9pbnQgbnVtYmVycyBp biBKYXZhc2NyaXB0IikKICAgICAoZGVzY3JpcHRpb24gIlRoaXMgcGFja2FnZSBjYW4gcmVhZCBh bmQgd3JpdGUgSUVFRTc1NCBmbG9hdGluZyBwb2ludApAQCAtNTI0LDcgKzUwNSw3IEBAIChkZWZp bmUtcHVibGljIG5vZGUtaW5oZXJpdHMKICAgICAgICAobW9kaWZ5LXBoYXNlcyAlc3RhbmRhcmQt cGhhc2VzCiAgICAgICAgICAoYWRkLWFmdGVyICdwYXRjaC1kZXBlbmRlbmNpZXMgJ2RlbGV0ZS1k ZXBlbmRlbmNpZXMKICAgICAgICAgICAgKGxhbWJkYSBhcmdzCi0gICAgICAgICAgICAgKGRlbGV0 ZS1kZXBlbmRlbmNpZXMgJygidGFwIikpKSkpCisgICAgICAgICAgICAgKG1vZGlmeS1qc29uIChk ZWxldGUtZGVwZW5kZW5jaWVzICcoInRhcCIpKSkpKSkKICAgICAgICA7OyBGSVhNRTogVGVzdHMg ZGVwZW5kIG9uIG5vZGUtdGFwCiAgICAgICAgIzp0ZXN0cz8gI2YpKQogICAgIChob21lLXBhZ2Ug Imh0dHBzOi8vZ2l0aHViLmNvbS9pc2FhY3MvaW5oZXJpdHMiKQpAQCAtNTUzLDggKzUzNCw4IEBA IChkZWZpbmUtcHVibGljIG5vZGUtaXJjCiAgICAgICAgKG1vZGlmeS1waGFzZXMgJXN0YW5kYXJk LXBoYXNlcwogICAgICAgICAgKGFkZC1hZnRlciAncGF0Y2gtZGVwZW5kZW5jaWVzICdkZWxldGUt ZGVwZW5kZW5jaWVzCiAgICAgICAgICAgIChsYW1iZGEgYXJncwotICAgICAgICAgICAgIChkZWxl dGUtZGVwZW5kZW5jaWVzCi0gICAgICAgICAgICAgIGAoImFuc2ktY29sb3IiICJmYXVjZXQiICJq c2NzIiAidGFwZSIpKSkpKQorICAgICAgICAgICAgIChtb2RpZnktanNvbiAoZGVsZXRlLWRlcGVu ZGVuY2llcworICAgICAgICAgICAgICBgKCJhbnNpLWNvbG9yIiAiZmF1Y2V0IiAianNjcyIgInRh cGUiKSkpKSkpCiAgICAgICAgIzp0ZXN0cz8gI2YpKQogICAgIChpbnB1dHMKICAgICAgKGxpc3Qg bm9kZS1pcmMtY29sb3JzKSkKQEAgLTU4Myw3ICs1NjQsNyBAQCAoZGVmaW5lLXB1YmxpYyBub2Rl LWlyYy1jb2xvcnMKICAgICAgICAobW9kaWZ5LXBoYXNlcyAlc3RhbmRhcmQtcGhhc2VzCiAgICAg ICAgICAoYWRkLWFmdGVyICdwYXRjaC1kZXBlbmRlbmNpZXMgJ2RlbGV0ZS1kZXBlbmRlbmNpZXMK ICAgICAgICAgICAgKGxhbWJkYSBhcmdzCi0gICAgICAgICAgICAgKGRlbGV0ZS1kZXBlbmRlbmNp ZXMgYCgiaXN0YW5idWwiICJ2b3dzIikpKSkpCisgICAgICAgICAgICAgKG1vZGlmeS1qc29uIChk ZWxldGUtZGVwZW5kZW5jaWVzIGAoImlzdGFuYnVsIiAidm93cyIpKSkpKSkKICAgICAgICAjOnRl c3RzPyAjZikpCiAgICAgKGhvbWUtcGFnZSAiaHR0cHM6Ly9naXRodWIuY29tL2ZlbnQvaXJjLWNv bG9ycy5qcyIpCiAgICAgKHN5bm9wc2lzICJOb2RlLmpzIG1vZHVsZSBwcm92aWRpbmcgY29sb3Ig YW5kIGZvcm1hdHRpbmcgZm9yIElSQyIpCkBAIC02NTcsNyArNjM4LDggQEAgKGRlZmluZS1wdWJs aWMgbm9kZS1taW5pbWlzdAogICAgICAgICM6cGhhc2VzIChtb2RpZnktcGhhc2VzICVzdGFuZGFy ZC1waGFzZXMKICAgICAgICAgICAgICAgICAgIChhZGQtYWZ0ZXIgJ3BhdGNoLWRlcGVuZGVuY2ll cyAnZGVsZXRlLWRlcGVuZGVuY2llcwogICAgICAgICAgICAgICAgICAgICAobGFtYmRhIF8KLSAg ICAgICAgICAgICAgICAgICAgICAoZGVsZXRlLWRlcGVuZGVuY2llcyAnKCJjb3ZlcnQiICJ0YXAi ICJ0YXBlIikpKSkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAobW9kaWZ5LWpzb24gKGRlbGV0 ZS1kZXBlbmRlbmNpZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICcoImNvdmVydCIgInRhcCIg InRhcGUiKSkpKSkpKSkKICAgICAoaG9tZS1wYWdlICJodHRwczovL2dpdGh1Yi5jb20vc3Vic3Rh Y2svbWluaW1pc3QiKQogICAgIChzeW5vcHNpcyAiUGFyc2UgQ0xJIGFyZ3VtZW50cyBpbiBKYXZh c2NyaXB0IikKICAgICAoZGVzY3JpcHRpb24gIlRoaXMgcGFja2FnZSBjYW4gc2NhbiBmb3IgQ0xJ IGZsYWdzIGFuZCBhcmd1bWVudHMgaW4KQEAgLTY4MywxMiArNjY1LDEzIEBAIChkZWZpbmUtcHVi bGljIG5vZGUtbXMKICAgICAgICAobW9kaWZ5LXBoYXNlcyAlc3RhbmRhcmQtcGhhc2VzCiAgICAg ICAgICAoYWRkLWFmdGVyICdwYXRjaC1kZXBlbmRlbmNpZXMgJ2RlbGV0ZS1kZXBlbmRlbmNpZXMK ICAgICAgICAgICAgKGxhbWJkYSBhcmdzCi0gICAgICAgICAgICAgKGRlbGV0ZS1kZXBlbmRlbmNp ZXMgYCgiZXNsaW50IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVj dC5qcyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJodXNreSIKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW50LXN0YWdlZCIKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJtb2NoYSIKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJwcmV0dGllciIpKSkpKQorICAgICAgICAgICAgIChtb2RpZnktanNvbiAo ZGVsZXRlLWRlcGVuZGVuY2llcworICAgICAgICAgICAgICAgYCgiZXNsaW50IgorICAgICAgICAg ICAgICAgICAiZXhwZWN0LmpzIgorICAgICAgICAgICAgICAgICAiaHVza3kiCisgICAgICAgICAg ICAgICAgICJsaW50LXN0YWdlZCIKKyAgICAgICAgICAgICAgICAgIm1vY2hhIgorICAgICAgICAg ICAgICAgICAicHJldHRpZXIiKSkpKSkpCiAgICAgICAgIzp0ZXN0cz8gI2YpKQogICAgIChob21l LXBhZ2UgImh0dHBzOi8vZ2l0aHViLmNvbS92ZXJjZWwvbXMiKQogICAgIChzeW5vcHNpcyAiQ29u dmVydCB0aW1lIHRvIG1pbGxpc2Vjb25kcyIpCkBAIC03MTYsMTQgKzY5OSwxNCBAQCAoZGVmaW5l LXB1YmxpYyBub2RlLW5hbgogICAgICAgIChtb2RpZnktcGhhc2VzICVzdGFuZGFyZC1waGFzZXMK ICAgICAgICAgIChhZGQtYWZ0ZXIgJ3BhdGNoLWRlcGVuZGVuY2llcyAnZGVsZXRlLWRlcGVuZGVu Y2llcwogICAgICAgICAgICAobGFtYmRhIGFyZ3MKLSAgICAgICAgICAgICAoZGVsZXRlLWRlcGVu ZGVuY2llcworICAgICAgICAgICAgIChtb2RpZnktanNvbiAoZGVsZXRlLWRlcGVuZGVuY2llcwog ICAgICAgICAgICAgICAnKCJiaW5kaW5ncyIKICAgICAgICAgICAgICAgICAiY29tbWFuZGVyIgog ICAgICAgICAgICAgICAgICJnbG9iIgogICAgICAgICAgICAgICAgICJyZXF1ZXN0IgogICAgICAg ICAgICAgICAgICJub2RlLWd5cCIgOzsgd291bGQgYmUgbmVlZGVkIGZvciB0ZXN0cwogICAgICAg ICAgICAgICAgICJ0YXAiCi0gICAgICAgICAgICAgICAgInh0ZW5kIikpKSkpCisgICAgICAgICAg ICAgICAgInh0ZW5kIikpKSkpKQogICAgICAgIDs7IHRlc3RzIG5lZWQgdGFwIGFuZCBvdGhlciBk ZXBlbmRlbmNpZXMKICAgICAgICAjOnRlc3RzPyAjZikpCiAgICAgKGlucHV0cwpAQCAtNzU1LDcg KzczOCw4IEBAIChkZWZpbmUtcHVibGljIG5vZGUtbm9ybWFsaXplLXBhdGgKICAgICAgICAjOnBo YXNlcyAobW9kaWZ5LXBoYXNlcyAlc3RhbmRhcmQtcGhhc2VzCiAgICAgICAgICAgICAgICAgICAo YWRkLWFmdGVyICdwYXRjaC1kZXBlbmRlbmNpZXMgJ2RlbGV0ZS1kZXBlbmRlbmNpZXMKICAgICAg ICAgICAgICAgICAgICAgKGxhbWJkYSBfCi0gICAgICAgICAgICAgICAgICAgICAgKGRlbGV0ZS1k ZXBlbmRlbmNpZXMgJygiZ3VscC1mb3JtYXQtbWQiICJtb2NoYSIpKSkpKSkpCisgICAgICAgICAg ICAgICAgICAgICAgKG1vZGlmeS1qc29uIChkZWxldGUtZGVwZW5kZW5jaWVzCisgICAgICAgICAg ICAgICAgICAgICAgICAnKCJndWxwLWZvcm1hdC1tZCIgIm1vY2hhIikpKSkpKSkpCiAgICAgKG5h dGl2ZS1pbnB1dHMgKGxpc3Qgbm9kZS1taW5pbWlzdCkpCiAgICAgKGhvbWUtcGFnZSAiaHR0cHM6 Ly9naXRodWIuY29tL2pvbnNjaGxpbmtlcnQvbm9ybWFsaXplLXBhdGgiKQogICAgIChzeW5vcHNp cyAiTm9ybWFsaXplIHNsYXNoZXMgaW4gYSBmaWxlIHBhdGgiKQpAQCAtNzg0LDcgKzc2OCw3IEBA IChkZWZpbmUtcHVibGljIG5vZGUtb25jZQogICAgICAgIChtb2RpZnktcGhhc2VzICVzdGFuZGFy ZC1waGFzZXMKICAgICAgICAgIChhZGQtYWZ0ZXIgJ3BhdGNoLWRlcGVuZGVuY2llcyAnZGVsZXRl LWRlcGVuZGVuY2llcwogICAgICAgICAgICAobGFtYmRhIGFyZ3MKLSAgICAgICAgICAgICAoZGVs ZXRlLWRlcGVuZGVuY2llcyAnKCJ0YXAiKSkpKSkKKyAgICAgICAgICAgICAobW9kaWZ5LWpzb24g KGRlbGV0ZS1kZXBlbmRlbmNpZXMgJygidGFwIikpKSkpKQogICAgICAgIDs7IEZJWE1FOiBUZXN0 cyBkZXBlbmQgb24gbm9kZS10YXAKICAgICAgICAjOnRlc3RzPyAjZikpCiAgICAgKGlucHV0cwpA QCAtODQxLDcgKzgyNSw4IEBAIChkZWZpbmUtcHVibGljIG5vZGUtcGF0aC1rZXkKICAgICAgICAj OnBoYXNlcyAobW9kaWZ5LXBoYXNlcyAlc3RhbmRhcmQtcGhhc2VzCiAgICAgICAgICAgICAgICAg ICAoYWRkLWFmdGVyICdwYXRjaC1kZXBlbmRlbmNpZXMgJ2RlbGV0ZS1kZXBlbmRlbmNpZXMKICAg ICAgICAgICAgICAgICAgICAgKGxhbWJkYSBfCi0gICAgICAgICAgICAgICAgICAgICAgKGRlbGV0 ZS1kZXBlbmRlbmNpZXMgJygiQHR5cGVzL25vZGUiICJhdmEiICJ0c2QiICJ4byIpKSkpKSkpCisg ICAgICAgICAgICAgICAgICAgICAgKG1vZGlmeS1qc29uIChkZWxldGUtZGVwZW5kZW5jaWVzCisg ICAgICAgICAgICAgICAgICAgICAgICAnKCJAdHlwZXMvbm9kZSIgImF2YSIgInRzZCIgInhvIikp KSkpKSkpCiAgICAgKGhvbWUtcGFnZSAiaHR0cHM6Ly9naXRodWIuY29tL3NpbmRyZXNvcmh1cy9w YXRoLWtleSIpCiAgICAgKHN5bm9wc2lzICJDcm9zcy1wbGF0Zm9ybSB1dGlsaXR5IHRvIGNvbXB1 dGUgdGhlIFBBVEggZW52aXJvbm1lbnQgdmFyaWFibGUga2V5IikKICAgICAoZGVzY3JpcHRpb24g IkBjb2Rle3BhdGgta2V5fSBwcm92aWRlcyBhbiBpbXBsZW1lbnRhdGlvbiB0byBjb21wdXRlIHRo ZQpAQCAtODY3LDcgKzg1Miw3IEBAIChkZWZpbmUtcHVibGljIG5vZGUtcGJmCiAgICAgICAgIzpw aGFzZXMgKG1vZGlmeS1waGFzZXMgJXN0YW5kYXJkLXBoYXNlcwogICAgICAgICAgICAgICAgICAg KGFkZC1hZnRlciAncGF0Y2gtZGVwZW5kZW5jaWVzICdkZWxldGUtZGVwZW5kZW5jaWVzCiAgICAg ICAgICAgICAgICAgICAgIChsYW1iZGEgXwotICAgICAgICAgICAgICAgICAgICAgIChkZWxldGUt ZGVwZW5kZW5jaWVzCisgICAgICAgICAgICAgICAgICAgICAgKG1vZGlmeS1qc29uIChkZWxldGUt ZGVwZW5kZW5jaWVzCiAgICAgICAgICAgICAgICAgICAgICAgICcoImJlbmNobWFyayIKICAgICAg ICAgICAgICAgICAgICAgICAgICAiYnJvd3NlcmlmeSIKICAgICAgICAgICAgICAgICAgICAgICAg ICAiZXNsaW50IgpAQCAtODc3LDcgKzg2Miw3IEBAIChkZWZpbmUtcHVibGljIG5vZGUtcGJmCiAg ICAgICAgICAgICAgICAgICAgICAgICAgInByb3RvY29sLWJ1ZmZlcnMiCiAgICAgICAgICAgICAg ICAgICAgICAgICAgInRhcCIKICAgICAgICAgICAgICAgICAgICAgICAgICAidGlsZS1zdGF0cy1y dW5uZXIiCi0gICAgICAgICAgICAgICAgICAgICAgICAgInVnbGlmeS1qcyIpKSkpKSkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgInVnbGlmeS1qcyIpKSkpKSkpKQogICAgIChpbnB1dHMgKGxp c3Qgbm9kZS1pZWVlNzU0IG5vZGUtcmVzb2x2ZS1wcm90b2J1Zi1zY2hlbWEpKQogICAgIChob21l LXBhZ2UgImh0dHBzOi8vZ2l0aHViLmNvbS9tYXBib3gvcGJmIikKICAgICAoc3lub3BzaXMgIkRl Y29kZSBhbmQgZW5jb2RlIHByb3RvY29sIGJ1ZmZlcnMgaW4gSmF2YXNjcmlwdCIpCkBAIC05MDgs NyArODkzLDggQEAgKGRlZmluZS1wdWJsaWMgbm9kZS1wcm90b2NvbC1idWZmZXJzLXNjaGVtYQog ICAgICAgICM6cGhhc2VzIChtb2RpZnktcGhhc2VzICVzdGFuZGFyZC1waGFzZXMKICAgICAgICAg ICAgICAgICAgIChhZGQtYWZ0ZXIgJ3BhdGNoLWRlcGVuZGVuY2llcyAnZGVsZXRlLWRlcGVuZGVu Y2llcwogICAgICAgICAgICAgICAgICAgICAobGFtYmRhIF8KLSAgICAgICAgICAgICAgICAgICAg ICAoZGVsZXRlLWRlcGVuZGVuY2llcyAnKCJzdGFuZGFyZCIgInRhcGUiKSkpKSkpKQorICAgICAg ICAgICAgICAgICAgICAgIChtb2RpZnktanNvbiAoZGVsZXRlLWRlcGVuZGVuY2llcworICAgICAg ICAgICAgICAgICAgICAgICAgJygic3RhbmRhcmQiICJ0YXBlIikpKSkpKSkpCiAgICAgKGhvbWUt cGFnZSAiaHR0cHM6Ly9naXRodWIuY29tL21hZmludG9zaC9wcm90b2NvbC1idWZmZXJzLXNjaGVt YSIpCiAgICAgKHN5bm9wc2lzICJQcm90b2NvbCBidWZmZXJzIHNjaGVtYSBwYXJzZXIgd3JpdHRl biBpbiBKYXZhc2NyaXB0IikKICAgICAoZGVzY3JpcHRpb24gIlRoaXMgcGFja2FnZSBwcm92aWRl cyBhIHByb3RvY29sIGJ1ZmZlcnMgc2NoZW1hIHBhcnNlcgpAQCAtOTM1LDI2ICs5MjEsMjcgQEAg KGRlZmluZS1wdWJsaWMgbm9kZS1yZWFkYWJsZS1zdHJlYW0KICAgICAgICAobW9kaWZ5LXBoYXNl cyAlc3RhbmRhcmQtcGhhc2VzCiAgICAgICAgICAoYWRkLWFmdGVyICdwYXRjaC1kZXBlbmRlbmNp ZXMgJ2RlbGV0ZS1kZXBlbmRlbmNpZXMKICAgICAgICAgICAgKGxhbWJkYSBhcmdzCi0gICAgICAg ICAgICAgKGRlbGV0ZS1kZXBlbmRlbmNpZXMgYCgiQGJhYmVsL2NsaSIKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJAYmFiZWwvY29yZSIKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJAYmFiZWwvcG9seWZpbGwiCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiQGJhYmVsL3ByZXNldC1lbnYiCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiYWlydGFwIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgImFzc2VydCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJibCIKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWVwLXN0cmljdC1lcXVhbCIKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJldmVudHMub25jZSIKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iIgotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgImd1bnppcC1tYXliZSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJoeXBlcnF1ZXN0IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgImxvbGV4IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm55YyIKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwdW1wIgotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgInJpbXJhZiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJ0YXAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGFw ZSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0YXItZnMiCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXRpbC1wcm9taXNpZnkiKSkpKSkKKyAgICAg ICAgICAgICAobW9kaWZ5LWpzb24gKGRlbGV0ZS1kZXBlbmRlbmNpZXMKKyAgICAgICAgICAgICAg IGAoIkBiYWJlbC9jbGkiCisgICAgICAgICAgICAgICAgICJAYmFiZWwvY29yZSIKKyAgICAgICAg ICAgICAgICAgIkBiYWJlbC9wb2x5ZmlsbCIKKyAgICAgICAgICAgICAgICAgIkBiYWJlbC9wcmVz ZXQtZW52IgorICAgICAgICAgICAgICAgICAiYWlydGFwIgorICAgICAgICAgICAgICAgICAiYXNz ZXJ0IgorICAgICAgICAgICAgICAgICAiYmwiCisgICAgICAgICAgICAgICAgICJkZWVwLXN0cmlj dC1lcXVhbCIKKyAgICAgICAgICAgICAgICAgImV2ZW50cy5vbmNlIgorICAgICAgICAgICAgICAg ICAiZ2xvYiIKKyAgICAgICAgICAgICAgICAgImd1bnppcC1tYXliZSIKKyAgICAgICAgICAgICAg ICAgImh5cGVycXVlc3QiCisgICAgICAgICAgICAgICAgICJsb2xleCIKKyAgICAgICAgICAgICAg ICAgIm55YyIKKyAgICAgICAgICAgICAgICAgInB1bXAiCisgICAgICAgICAgICAgICAgICJyaW1y YWYiCisgICAgICAgICAgICAgICAgICJ0YXAiCisgICAgICAgICAgICAgICAgICJ0YXBlIgorICAg ICAgICAgICAgICAgICAidGFyLWZzIgorICAgICAgICAgICAgICAgICAidXRpbC1wcm9taXNpZnki KSkpKSkpCiAgICAgICAgIzp0ZXN0cz8gI2YpKQogICAgIChpbnB1dHMgKGxpc3Qgbm9kZS11dGls LWRlcHJlY2F0ZSBub2RlLXN0cmluZy1kZWNvZGVyIG5vZGUtaW5oZXJpdHMpKQogICAgIChob21l LXBhZ2UgImh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvcmVhZGFibGUtc3RyZWFtIikKQEAgLTk4 Myw3ICs5NzAsOCBAQCAoZGVmaW5lLXB1YmxpYyBub2RlLXJlc29sdmUtcHJvdG9idWYtc2NoZW1h CiAgICAgICAgIzpwaGFzZXMgKG1vZGlmeS1waGFzZXMgJXN0YW5kYXJkLXBoYXNlcwogICAgICAg ICAgICAgICAgICAgKGFkZC1hZnRlciAncGF0Y2gtZGVwZW5kZW5jaWVzICdkZWxldGUtZGVwZW5k ZW5jaWVzCiAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgXwotICAgICAgICAgICAgICAgICAg ICAgIChkZWxldGUtZGVwZW5kZW5jaWVzICcoInN0YW5kYXJkIiAidGFwZSIpKSkpKSkpCisgICAg ICAgICAgICAgICAgICAgICAgKG1vZGlmeS1qc29uIChkZWxldGUtZGVwZW5kZW5jaWVzCisgICAg ICAgICAgICAgICAgICAgICAgICAnKCJzdGFuZGFyZCIgInRhcGUiKSkpKSkpKSkKICAgICAoaW5w dXRzIChsaXN0IG5vZGUtcHJvdG9jb2wtYnVmZmVycy1zY2hlbWEpKQogICAgIChob21lLXBhZ2Ug Imh0dHBzOi8vZ2l0aHViLmNvbS9tYWZpbnRvc2gvcmVzb2x2ZS1wcm90b2J1Zi1zY2hlbWEiKQog ICAgIChzeW5vcHNpcyAiUmVzb2x2ZSBwcm90b2J1ZiBpbXBvcnRzIikKQEAgLTEwMTIsNyArMTAw MCw3IEBAIChkZWZpbmUtcHVibGljIG5vZGUtc2FmZS1idWZmZXIKICAgICAgICAobW9kaWZ5LXBo YXNlcyAlc3RhbmRhcmQtcGhhc2VzCiAgICAgICAgICAoYWRkLWFmdGVyICdwYXRjaC1kZXBlbmRl bmNpZXMgJ2RlbGV0ZS1kZXBlbmRlbmNpZXMKICAgICAgICAgICAgKGxhbWJkYSBhcmdzCi0gICAg ICAgICAgICAgKGRlbGV0ZS1kZXBlbmRlbmNpZXMgJygidGFwZSIgInN0YW5kYXJkIikpKSkpCisg ICAgICAgICAgICAgKG1vZGlmeS1qc29uIChkZWxldGUtZGVwZW5kZW5jaWVzICcoInRhcGUiICJz dGFuZGFyZCIpKSkpKSkKICAgICAgICAjOnRlc3RzPyAjZikpCiAgICAgKGhvbWUtcGFnZSAiaHR0 cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9zYWZlLWJ1ZmZlciIpCiAgICAgKHN5bm9wc2lzICJCdWZm ZXIgY3JlYXRpb24gd2l0aCBleHBsaWNpdCBzZW1hbnRpY3MiKQpAQCAtMTA0MCwyMCArMTAyOCwy MSBAQCAoZGVmaW5lLXB1YmxpYyBub2RlLXNhZmUtc3RhYmxlLXN0cmluZ2lmeQogICAgICAgICM6 cGhhc2VzIChtb2RpZnktcGhhc2VzICVzdGFuZGFyZC1waGFzZXMKICAgICAgICAgICAgICAgICAg IChhZGQtYWZ0ZXIgJ3BhdGNoLWRlcGVuZGVuY2llcyAnZGVsZXRlLWRlcGVuZGVuY2llcwogICAg ICAgICAgICAgICAgICAgICAobGFtYmRhIF8KLSAgICAgICAgICAgICAgICAgICAgICAoZGVsZXRl LWRlcGVuZGVuY2llcyAnKCJiZW5jaG1hcmsiICJjbG9uZSIKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJmYXN0LWpzb24tc3RhYmxlLXN0cmluZ2lmeSIKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmYXN0LXNhZmUtc3Ry aW5naWZ5IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZh c3Qtc3RhYmxlLXN0cmluZ2lmeSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJmYXN0ZXItc3RhYmxlLXN0cmluZ2lmeSIKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJmYXN0ZXN0LXN0YWJsZS1zdHJpbmdpZnkiCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAianNvbi1zdGFibGUtc3Ry aW5naWZ5IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImpz b24tc3RyaW5naWZ5LWRldGVybWluaXN0aWMiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAianNvbi1zdHJpbmdpZnktc2FmZSIKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGFuZGFyZCIKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0YXAiCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAidHlwZXNjcmlwdCIKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJAdHlwZXMvbm9kZSIKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJAdHlwZXMvanNvbi1zdGFibGUtc3RyaW5naWZ5 IikpKSkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAobW9kaWZ5LWpzb24gKGRlbGV0ZS1kZXBl bmRlbmNpZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICcoImJlbmNobWFyayIgImNsb25lIgor ICAgICAgICAgICAgICAgICAgICAgICAgICAiZmFzdC1qc29uLXN0YWJsZS1zdHJpbmdpZnkiCisg ICAgICAgICAgICAgICAgICAgICAgICAgICJmYXN0LXNhZmUtc3RyaW5naWZ5IgorICAgICAgICAg ICAgICAgICAgICAgICAgICAiZmFzdC1zdGFibGUtc3RyaW5naWZ5IgorICAgICAgICAgICAgICAg ICAgICAgICAgICAiZmFzdGVyLXN0YWJsZS1zdHJpbmdpZnkiCisgICAgICAgICAgICAgICAgICAg ICAgICAgICJmYXN0ZXN0LXN0YWJsZS1zdHJpbmdpZnkiCisgICAgICAgICAgICAgICAgICAgICAg ICAgICJqc29uLXN0YWJsZS1zdHJpbmdpZnkiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJq c29uLXN0cmluZ2lmeS1kZXRlcm1pbmlzdGljIgorICAgICAgICAgICAgICAgICAgICAgICAgICAi anNvbi1zdHJpbmdpZnktc2FmZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInN0YW5kYXJk IgorICAgICAgICAgICAgICAgICAgICAgICAgICAidGFwIgorICAgICAgICAgICAgICAgICAgICAg ICAgICAidHlwZXNjcmlwdCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkB0eXBlcy9ub2Rl IgorICAgICAgICAgICAgICAgICAgICAgICAgICAiQHR5cGVzL2pzb24tc3RhYmxlLXN0cmluZ2lm eSIpKSkpKSkpKQogICAgIChob21lLXBhZ2UgImh0dHBzOi8vZ2l0aHViLmNvbS9CcmlkZ2VBUi9z YWZlLXN0YWJsZS1zdHJpbmdpZnkiKQogICAgIChzeW5vcHNpcyAiU2VyaWFsaXphdGlvbiBvZiBq YXZhc2NyaXB0IG9iamVjdHMiKQogICAgIChkZXNjcmlwdGlvbgpAQCAtMTExMSw3ICsxMTAwLDcg QEAgKGRlZmluZS1wdWJsaWMgbm9kZS1zZW12ZXIKICAgICAgICAobW9kaWZ5LXBoYXNlcyAlc3Rh bmRhcmQtcGhhc2VzCiAgICAgICAgICAoYWRkLWFmdGVyICdwYXRjaC1kZXBlbmRlbmNpZXMgJ2Rl bGV0ZS1kZXBlbmRlbmNpZXMKICAgICAgICAgICAgKGxhbWJkYSBhcmdzCi0gICAgICAgICAgICAg KGRlbGV0ZS1kZXBlbmRlbmNpZXMgJygidGFwIikpKSkpCisgICAgICAgICAgICAgKG1vZGlmeS1q c29uIChkZWxldGUtZGVwZW5kZW5jaWVzICcoInRhcCIpKSkpKSkKICAgICAgICA7OyBGSVhNRTog VGVzdHMgZGVwZW5kIG9uIG5vZGUtdGFwCiAgICAgICAgIzp0ZXN0cz8gI2YpKQogICAgIChob21l LXBhZ2UgImh0dHBzOi8vZ2l0aHViLmNvbS9ucG0vbm9kZS1zZW12ZXIiKQpAQCAtMTE1MSw3ICsx MTQwLDggQEAgKGRlZmluZS1wdWJsaWMgbm9kZS1zZXJpYWxwb3J0CiAgICAgICAgKG1vZGlmeS1w aGFzZXMgJXN0YW5kYXJkLXBoYXNlcwogICAgICAgICAgKGFkZC1hZnRlciAncGF0Y2gtZGVwZW5k ZW5jaWVzICdkZWxldGUtZGVwZW5kZW5jaWVzCiAgICAgICAgICAgIChsYW1iZGEgYXJncwotICAg ICAgICAgICAgIChkZWxldGUtZGVwZW5kZW5jaWVzIGAoIkBzZXJpYWxwb3J0L2JpbmRpbmctbW9j ayIpKSkpCisgICAgICAgICAgICAgKG1vZGlmeS1qc29uIChkZWxldGUtZGVwZW5kZW5jaWVzCisg ICAgICAgICAgICAgICBgKCJAc2VyaWFscG9ydC9iaW5kaW5nLW1vY2siKSkpKSkKICAgICAgICAg IChhZGQtYWZ0ZXIgJ3VucGFjayAnY2hkaXIKICAgICAgICAgICAgKGxhbWJkYSBhcmdzCiAgICAg ICAgICAgICAgKGNoZGlyICJwYWNrYWdlcy9zZXJpYWxwb3J0IikpKSkKQEAgLTEyMTAsMjUgKzEy MDAsMTAgQEAgKGRlZmluZS1wdWJsaWMgbm9kZS1zZXJpYWxwb3J0LWJpbmRpbmdzCiAgICAgICAg ICAgICAgKGNoZGlyICJwYWNrYWdlcy9iaW5kaW5ncyIpKSkKICAgICAgICAgIChhZGQtYWZ0ZXIg J3BhdGNoLWRlcGVuZGVuY2llcyAnZGVsZXRlLWRlcGVuZGVuY2llcwogICAgICAgICAgICAobGFt YmRhIGFyZ3MKLSAgICAgICAgICAgICAoZGVsZXRlLWRlcGVuZGVuY2llcyBgKCJwcmVidWlsZC1p bnN0YWxsIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgZGV2RGVwZW5k ZW5jaWVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQHNlcmlhbHBvcnQv YmluZGluZy1tb2NrIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vZGUt YWJpIikpKSkKLSAgICAgICAgIChhZGQtYWZ0ZXIgJ2NoZGlyICdhdm9pZC1wcmVidWlsZC1pbnN0 YWxsCi0gICAgICAgICAgIChsYW1iZGEgYXJncwotICAgICAgICAgICAgICh3aXRoLWF0b21pYy1q c29uLWZpbGUtcmVwbGFjZW1lbnQgKGxhbWJkYSAocGtnLW1ldGEtYWxpc3QpCi0gICAgICAgICAg ICAgICAobWFwCi0gICAgICAgICAgICAgICAgIChtYXRjaC1sYW1iZGEKLSAgICAgICAgICAgICAg ICAgICAoKCJzY3JpcHRzIiAuIHNjcmlwdHMtYWxpc3QpCi0gICAgICAgICAgICAgICAgICAgICAo Y29ucyAic2NyaXB0cyIgKGZpbHRlcgotICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2gtbGFt YmRhCi0gICAgICAgICAgICAgICAgICAgICAgICAgKCgiaW5zdGFsbCIgLiBfKSAjZikKLSAgICAg ICAgICAgICAgICAgICAgICAgICAoXyAjdCkpCi0gICAgICAgICAgICAgICAgICAgICAgIHNjcmlw dHMtYWxpc3QpKSkKLSAgICAgICAgICAgICAgICAgICAoKCJneXBmaWxlIiAuIF8pCi0gICAgICAg ICAgICAgICAgICAgICAoY29ucyAiZ3lwZmlsZSIgI2YpKQotICAgICAgICAgICAgICAgICAgIChv dGhlciBvdGhlcikpCi0gICAgICAgICAgICAgICAgIHBrZy1tZXRhLWFsaXN0KSkpKSkpCisgICAg ICAgICAgICAgKG1vZGlmeS1qc29uCisgICAgICAgICAgICAgICAoZGVsZXRlLWRlcGVuZGVuY2ll cyBgKAorICAgICAgICAgICAgICAgICA7OyBkZXZEZXBlbmRlbmNpZXMKKyAgICAgICAgICAgICAg ICAgIm5vZGUtYWJpIikpKSkpKQogICAgICAgICM6dGVzdHM/ICNmKSkKICAgICAoc3lub3BzaXMg IkFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIE5vZGUgU2VyaWFsUG9ydCBiaW5kaW5ncyIpCiAgICAg KGRlc2NyaXB0aW9uICJOb2RlIFNlcmlhbFBvcnQgaXMgYSBtb2R1bGFyIHN1aXRlIG9mIE5vZGUu anMgcGFja2FnZXMgZm9yCkBAIC0xNDA5LDggKzEzODQsOSBAQCAoZGVmaW5lLXB1YmxpYyBub2Rl LXNlcmlhbHBvcnQtc3RyZWFtCiAgICAgICAgKG1vZGlmeS1waGFzZXMgJXN0YW5kYXJkLXBoYXNl cwogICAgICAgICAgKGFkZC1hZnRlciAncGF0Y2gtZGVwZW5kZW5jaWVzICdkZWxldGUtZGVwZW5k ZW5jaWVzCiAgICAgICAgICAgIChsYW1iZGEgYXJncwotICAgICAgICAgICAgIChkZWxldGUtZGVw ZW5kZW5jaWVzIGAoOzsgZGV2RGVwZW5kZW5jaWVzCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiQHNlcmlhbHBvcnQvYmluZGluZy1tb2NrIikpKSkKKyAgICAgICAgICAgICAo bW9kaWZ5LWpzb24KKyAgICAgICAgICAgICAgIChkZWxldGUtZGVwZW5kZW5jaWVzIDs7IGRldkRl cGVuZGVuY2llcworICAgICAgICAgICAgICAgICBgKCJAc2VyaWFscG9ydC9iaW5kaW5nLW1vY2si KSkpKSkKICAgICAgICAgIChhZGQtYWZ0ZXIgJ3VucGFjayAnY2hkaXIKICAgICAgICAgICAgKGxh bWJkYSBhcmdzCiAgICAgICAgICAgICAgKGNoZGlyICJwYWNrYWdlcy9zdHJlYW0iKSkpKQpAQCAt MTQ2MSw3ICsxNDM3LDcgQEAgKGRlZmluZS1wdWJsaWMgbm9kZS1zcWxpdGUzCiAgICAgICAgKG1v ZGlmeS1waGFzZXMgJXN0YW5kYXJkLXBoYXNlcwogICAgICAgICAgKGFkZC1hZnRlciAncGF0Y2gt ZGVwZW5kZW5jaWVzICdkZWxldGUtZGVwZW5kZW5jaWVzCiAgICAgICAgICAgIChsYW1iZGEgYXJn cwotICAgICAgICAgICAgIChkZWxldGUtZGVwZW5kZW5jaWVzCisgICAgICAgICAgICAgKG1vZGlm eS1qc29uIChkZWxldGUtZGVwZW5kZW5jaWVzCiAgICAgICAgICAgICAgIGAoOzsgTm9ybWFsbHks IHRoaXMgaXMgImJ1aWx0IiB1c2luZyBAbWFwYm94L25vZGUtcHJlLWd5cCwKICAgICAgICAgICAg ICAgICA7OyB3aGljaCBwdWJsaXNoZXMgb3IgZG93bmxvYWRzIHByZS1idWlsdCBiaW5hcmllcyBv cgogICAgICAgICAgICAgICAgIDs7IGZhbGxzIGJhY2sgdG8gYnVpbGRpbmcgZnJvbSBzb3VyY2Uu ICBIZXJlLCB3ZSBwYXRjaCBvdXQKQEAgLTE0ODAsNyArMTQ1Niw3IEBAIChkZWZpbmUtcHVibGlj IG5vZGUtc3FsaXRlMwogICAgICAgICAgICAgICAgICJub2RlLWd5cCIKICAgICAgICAgICAgICAg ICA7OyBUaGVzZSB3ZSdkIGxpa2UsIHdlIGp1c3QgZG9uJ3QgaGF2ZSB0aGVtIHlldDoKICAgICAg ICAgICAgICAgICAiZXNsaW50IgotICAgICAgICAgICAgICAgICJtb2NoYSIpKSkpCisgICAgICAg ICAgICAgICAgIm1vY2hhIikpKSkpCiAgICAgICAgICAoYWRkLWJlZm9yZSAnY29uZmlndXJlICdu cG0tY29uZmlnLXNxbGl0ZQogICAgICAgICAgICA7OyBXZSBuZWVkIHRoaXMgc3RlcCBldmVuIGlm IHdlIGRvIHJlcGxhY2UgQG1hcGJveC9ub2RlLXByZS1neXAKICAgICAgICAgICAgOzsgYmVjYXVz ZSB0aGUgcGFja2FnZSBleHBlY3RzIHRvIGJ1aWxkIGl0cyBidW5kbGVkIHNxbGl0ZQpAQCAtMTUx NCw4ICsxNDkwLDkgQEAgKGRlZmluZS1wdWJsaWMgbm9kZS1zcWxpdGUzCiAgICAgICAgICAgICAg KHN1YnN0aXR1dGUqICIubnBtaWdub3JlIgogICAgICAgICAgICAgICAgKCgibGliL2JpbmRpbmci KQogICAgICAgICAgICAgICAgICIjbGliL2JpbmRpbmcgIyA8LSBwYXRjaGVkIGZvciBHdWl4Iikp Ci0gICAgICAgICAgICAgKHdpdGgtYXRvbWljLWpzb24tZmlsZS1yZXBsYWNlbWVudCAobGFtYmRh IChwa2ctbWV0YS1hbGlzdCkKLSAgICAgICAgICAgICAgIChsZXQgKChiaW5hcnktYWxpc3QgKGFz c29jLXJlZiBwa2ctbWV0YS1hbGlzdCAiYmluYXJ5IikpKQorICAgICAgICAgICAgIChtb2RpZnkt anNvbgorICAgICAgICAgICAgICAgKGxhbWJkYSAocGtnLW1ldGEtYWxpc3QpCisgICAgICAgICAg ICAgICAgIChsZXQgKChiaW5hcnktYWxpc3QgKGFzc29jLXJlZiBwa2ctbWV0YS1hbGlzdCAiYmlu YXJ5IikpKQogICAgICAgICAgICAgICAgICA7OyBXaGVuIGl0IGJ1aWxkcyBmcm9tIHNvdXJjZSwg bm9kZS1wcmUtZ3lwIHN1cHBsaWVzCiAgICAgICAgICAgICAgICAgIDs7IG1vZHVsZV9uYW1lIGFu ZCBtb2R1bGVfcGF0aCBiYXNlZCBvbiB0aGUgZW50cmllcyB1bmRlcgogICAgICAgICAgICAgICAg ICA7OyAiYmluYXJ5IiBmcm9tICJwYWNrYWdlLmpzb24iLCBzbyB0aGlzIHBhY2thZ2UncwpAQCAt MTUyOCwxOSArMTUwNSwxMSBAQCAoZGVmaW5lLXB1YmxpYyBub2RlLXNxbGl0ZTMKICAgICAgICAg ICAgICAgICAgICAoYXNzb2MtcmVmIGJpbmFyeS1hbGlzdCAibW9kdWxlX25hbWUiKQogICAgICAg ICAgICAgICAgICAgICIgbW9kdWxlX3BhdGg9IgogICAgICAgICAgICAgICAgICAgIChhc3NvYy1y ZWYgYmluYXJ5LWFsaXN0ICJtb2R1bGVfcGF0aCIpKSkpCisgICAgICAgICAgICAgICAgIHBrZy1t ZXRhLWFsaXN0KQogICAgICAgICAgICAgICAgOzsgV2UgbmVlZCB0byByZW1vdmUgdGhlIGluc3Rh bGwgc2NyaXB0IGZyb20gInBhY2thZ2UuanNvbiIsCiAgICAgICAgICAgICAgICA7OyBhcyBpdCB3 b3VsZCB0cnkgdG8gdXNlIG5vZGUtcHJlLWd5cCBhbmQgd291bGQgYmxvY2sgdGhlCiAgICAgICAg ICAgICAgICA7OyBhdXRvbWF0aWMgYnVpbGRpbmcgcGVyZm9ybWVkIGJ5IGBucG0gaW5zdGFsbGAu Ci0gICAgICAgICAgICAgICAobWFwCi0gICAgICAgICAgICAgICAgIChtYXRjaC1sYW1iZGEKLSAg ICAgICAgICAgICAgICAgICAoKCJzY3JpcHRzIiAuIHNjcmlwdHMtYWxpc3QpCi0gICAgICAgICAg ICAgICAgICAgICAoY29ucyAic2NyaXB0cyIgKGZpbHRlcgotICAgICAgICAgICAgICAgICAgICAg ICAobWF0Y2gtbGFtYmRhCi0gICAgICAgICAgICAgICAgICAgICAgICAgKCgiaW5zdGFsbCIgLiBf KSAjZikKLSAgICAgICAgICAgICAgICAgICAgICAgICAoXyAjdCkpCi0gICAgICAgICAgICAgICAg ICAgICAgIHNjcmlwdHMtYWxpc3QpKSkKLSAgICAgICAgICAgICAgICAgICAob3RoZXIgb3RoZXIp KQotICAgICAgICAgICAgICAgICBwa2ctbWV0YS1hbGlzdCkpKSkpKSkpCisgICAgICAgICAgICAg ICAoZGVsZXRlLWZpZWxkcyBgKCgic2NyaXB0cyIgImluc3RhbGwiKSkpKSkpKSkpCiAgICAgKGhv bWUtcGFnZSAiaHR0cHM6Ly9naXRodWIuY29tL21hcGJveC9ub2RlLXNxbGl0ZTMiKQogICAgIChz eW5vcHNpcyAiTm9kZS5qcyBiaW5kaW5ncyBmb3IgU1FMaXRlMyIpCiAgICAgKGRlc2NyaXB0aW9u CkBAIC0xNjIzLDggKzE1OTIsOCBAQCAoZGVmaW5lLXB1YmxpYyBub2RlLXN0cmluZy1kZWNvZGVy CiAgICAgICAgKG1vZGlmeS1waGFzZXMgJXN0YW5kYXJkLXBoYXNlcwogICAgICAgICAgKGFkZC1h ZnRlciAncGF0Y2gtZGVwZW5kZW5jaWVzICdkZWxldGUtZGVwZW5kZW5jaWVzCiAgICAgICAgICAg IChsYW1iZGEgYXJncwotICAgICAgICAgICAgIChkZWxldGUtZGVwZW5kZW5jaWVzCi0gICAgICAg ICAgICAgICcoInRhcCIgImNvcmUtdXRpbC1pcyIgImJhYmVsLXBvbHlmaWxsIikpKSkpCisgICAg ICAgICAgICAgKG1vZGlmeS1qc29uIChkZWxldGUtZGVwZW5kZW5jaWVzCisgICAgICAgICAgICAg ICcoInRhcCIgImNvcmUtdXRpbC1pcyIgImJhYmVsLXBvbHlmaWxsIikpKSkpKQogICAgICAgIDs7 IEZJWE1FOiBUZXN0cyBkZXBlbmQgb24gbm9kZS10YXAKICAgICAgICAjOnRlc3RzPyAjZikpCiAg ICAgKGlucHV0cyAobGlzdCBub2RlLXNhZmUtYnVmZmVyIG5vZGUtaW5oZXJpdHMpKQpAQCAtMTY3 OCw3ICsxNjQ3LDcgQEAgKGRlZmluZS1wdWJsaWMgbm9kZS13cmFwcHkKICAgICAgICAobW9kaWZ5 LXBoYXNlcyAlc3RhbmRhcmQtcGhhc2VzCiAgICAgICAgICAoYWRkLWFmdGVyICdwYXRjaC1kZXBl bmRlbmNpZXMgJ2RlbGV0ZS1kZXBlbmRlbmNpZXMKICAgICAgICAgICAgKGxhbWJkYSBhcmdzCi0g ICAgICAgICAgICAgKGRlbGV0ZS1kZXBlbmRlbmNpZXMgJygidGFwIikpKSkpKSkKKyAgICAgICAg ICAgICAobW9kaWZ5LWpzb24gKGRlbGV0ZS1kZXBlbmRlbmNpZXMgJygidGFwIikpKSkpKSkpCiAg ICAgKGhvbWUtcGFnZSAiaHR0cHM6Ly9naXRodWIuY29tL25wbS93cmFwcHkiKQogICAgIChzeW5v cHNpcyAiQ2FsbGJhY2sgd3JhcHBpbmcgdXRpbGl0eSIpCiAgICAgKGRlc2NyaXB0aW9uICJAY29k ZXt3cmFwcHl9IGlzIGEgdXRpbGl0eSBmb3IgTm9kZS5qcyB0byB3cmFwIGNhbGxiYWNrcy4iKQpA QCAtMTcwMyw3ICsxNjcyLDggQEAgKGRlZmluZS1wdWJsaWMgbm9kZS15YXpsCiAgICAgICAgIzpw aGFzZXMgKG1vZGlmeS1waGFzZXMgJXN0YW5kYXJkLXBoYXNlcwogICAgICAgICAgICAgICAgICAg KGFkZC1hZnRlciAncGF0Y2gtZGVwZW5kZW5jaWVzICdkZWxldGUtZGVwZW5kZW5jaWVzCiAgICAg ICAgICAgICAgICAgICAgIChsYW1iZGEgXwotICAgICAgICAgICAgICAgICAgICAgIChkZWxldGUt ZGVwZW5kZW5jaWVzICcoImFpcnRhcCIgImJsIiAiaXN0YW5idWwiICJ5YXV6bCIpKSkpKSkpCisg ICAgICAgICAgICAgICAgICAgICAgKG1vZGlmeS1qc29uIChkZWxldGUtZGVwZW5kZW5jaWVzCisg ICAgICAgICAgICAgICAgICAgICAgICAnKCJhaXJ0YXAiICJibCIgImlzdGFuYnVsIiAieWF1emwi KSkpKSkpKSkKICAgICAoaW5wdXRzIChsaXN0IG5vZGUtYnVmZmVyLWNyYzMyKSkKICAgICAoaG9t ZS1wYWdlICJodHRwczovL2dpdGh1Yi5jb20vdGhlam9zaHdvbGZlL3lhemwiKQogICAgIChzeW5v cHNpcyAiWWV0IGFub3RoZXIgemlwIGxpYnJhcnkgZm9yIG5vZGUiKQpkaWZmIC0tZ2l0IGEvZ251 L3BhY2thZ2VzL25vZGUuc2NtIGIvZ251L3BhY2thZ2VzL25vZGUuc2NtCmluZGV4IDIwYWNmZmIz ZGYuLmExM2VjNWQwNzcgMTAwNjQ0Ci0tLSBhL2dudS9wYWNrYWdlcy9ub2RlLnNjbQorKysgYi9n bnUvcGFja2FnZXMvbm9kZS5zY20KQEAgLTEzLDYgKzEzLDcgQEAKIDs7OyBDb3B5cmlnaHQgwqkg MjAyMSwgMjAyMiBQaGlsaXAgTWNHcmF0aCA8cGhpbGlwQHBoaWxpcG1jZ3JhdGguY29tPgogOzs7 IENvcHlyaWdodCDCqSAyMDIyIEhpbHRvbiBDaGFpbiA8aGFrb0B1bHRyYXJhcmUuc3BhY2U+CiA7 OzsgQ29weXJpZ2h0IMKpIDIwMjQgRWZyYWltIEZsYXNobmVyIDxlZnJhaW1AZmxhc2huZXIuY28u aWw+Cis7OzsgQ29weXJpZ2h0IMKpIDIwMjQgRGFuaWVsIEtob2RhYmFraHNoIDxkLmtob2RhYmFr aHNoQGdtYWlsLmNvbT4KIDs7OwogOzs7IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBHdWl4Lgog Ozs7CkBAIC0zNjYsNyArMzY3LDcgQEAgKGRlZmluZS1wdWJsaWMgbm9kZS1zZW12ZXItYm9vdHN0 cmFwCiAgICAgICAgKG1vZGlmeS1waGFzZXMgJXN0YW5kYXJkLXBoYXNlcwogICAgICAgICAgKGFk ZC1hZnRlciAncGF0Y2gtZGVwZW5kZW5jaWVzICdkZWxldGUtZGVwZW5kZW5jaWVzCiAgICAgICAg ICAgIChsYW1iZGEgYXJncwotICAgICAgICAgICAgIChkZWxldGUtZGVwZW5kZW5jaWVzICcoInRh cCIpKSkpKSkpCisgICAgICAgICAgICAgKG1vZGlmeS1qc29uIChkZWxldGUtZGVwZW5kZW5jaWVz ICcoInRhcCIpKSkpKSkpKQogICAgIChob21lLXBhZ2UgImh0dHBzOi8vZ2l0aHViLmNvbS9ucG0v bm9kZS1zZW12ZXIiKQogICAgIChwcm9wZXJ0aWVzICcoKGhpZGRlbj8gLiAjdCkpKQogICAgIChz eW5vcHNpcyAiUGFyc2VzIHNlbWFudGljIHZlcnNpb25zIHN0cmluZ3MiKQpAQCAtMzk3LDExICsz OTgsMTIgQEAgKGRlZmluZS1wdWJsaWMgbm9kZS1tcy1ib290c3RyYXAKICAgICAgICAobW9kaWZ5 LXBoYXNlcyAlc3RhbmRhcmQtcGhhc2VzCiAgICAgICAgICAoYWRkLWFmdGVyICdwYXRjaC1kZXBl bmRlbmNpZXMgJ2RlbGV0ZS1kZXBlbmRlbmNpZXMKICAgICAgICAgICAgKGxhbWJkYSBhcmdzCi0g ICAgICAgICAgICAgKGRlbGV0ZS1kZXBlbmRlbmNpZXMgJygiZXNsaW50IgotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdC5qcyIKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJodXNreSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJsaW50LXN0YWdlZCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJt b2NoYSIpKSkpKSkpCisgICAgICAgICAgICAgKG1vZGlmeS1qc29uIChkZWxldGUtZGVwZW5kZW5j aWVzCisgICAgICAgICAgICAgICAnKCJlc2xpbnQiCisgICAgICAgICAgICAgICAgICJleHBlY3Qu anMiCisgICAgICAgICAgICAgICAgICJodXNreSIKKyAgICAgICAgICAgICAgICAgImxpbnQtc3Rh Z2VkIgorICAgICAgICAgICAgICAgICAibW9jaGEiKSkpKSkpKSkKICAgICAoaG9tZS1wYWdlICJo dHRwczovL2dpdGh1Yi5jb20vemVpdC9tcyNyZWFkbWUiKQogICAgIChwcm9wZXJ0aWVzICcoKGhp ZGRlbj8gLiAjdCkpKQogICAgIChzeW5vcHNpcyAiVGlueSBtaWxsaXNlY29uZCBjb252ZXJzaW9u IHV0aWxpdHkiKQpAQCAtNDMxLDcgKzQzMyw3IEBAIChkZWZpbmUtcHVibGljIG5vZGUtYmluYXJ5 LXNlYXJjaC1ib290c3RyYXAKICAgICAgICAobW9kaWZ5LXBoYXNlcyAlc3RhbmRhcmQtcGhhc2Vz CiAgICAgICAgICAoYWRkLWFmdGVyICdwYXRjaC1kZXBlbmRlbmNpZXMgJ2RlbGV0ZS1kZXBlbmRl bmNpZXMKICAgICAgICAgICAgKGxhbWJkYSBhcmdzCi0gICAgICAgICAgICAgKGRlbGV0ZS1kZXBl bmRlbmNpZXMgYCgiY2hhaSIgIm1vY2hhIikpKSkpKSkKKyAgICAgICAgICAgICAobW9kaWZ5LWpz b24gKGRlbGV0ZS1kZXBlbmRlbmNpZXMgYCgiY2hhaSIgIm1vY2hhIikpKSkpKSkpCiAgICAgKGhv bWUtcGFnZSAiaHR0cHM6Ly9naXRodWIuY29tL2Rhcmtza3lhcHAvYmluYXJ5LXNlYXJjaCNyZWFk bWUiKQogICAgIChwcm9wZXJ0aWVzICcoKGhpZGRlbj8gLiAjdCkpKQogICAgIChzeW5vcHNpcyAi VGlueSBiaW5hcnkgc2VhcmNoIGZ1bmN0aW9uIHdpdGggY29tcGFyYXRvcnMiKQpAQCAtNDYwLDE3 ICs0NjIsMTggQEAgKGRlZmluZS1wdWJsaWMgbm9kZS1kZWJ1Zy1ib290c3RyYXAKICAgICAgICAo bW9kaWZ5LXBoYXNlcyAlc3RhbmRhcmQtcGhhc2VzCiAgICAgICAgICAoYWRkLWFmdGVyICdwYXRj aC1kZXBlbmRlbmNpZXMgJ2RlbGV0ZS1kZXBlbmRlbmNpZXMKICAgICAgICAgICAgKGxhbWJkYSBh cmdzCi0gICAgICAgICAgICAgKGRlbGV0ZS1kZXBlbmRlbmNpZXMgYCgiYnJmcyIKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJicm93c2VyaWZ5IgotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgImNvdmVyYWxscyIKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJpc3RhbmJ1bCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJrYXJtYSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJrYXJtYS1i cm93c2VyaWZ5IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImthcm1hLWNo cm9tZS1sYXVuY2hlciIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJrYXJt YS1tb2NoYSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2NoYSIKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2NoYS1sY292LXJlcG9ydGVyIgot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInhvIikpKSkpKSkKKyAgICAgICAg ICAgICAobW9kaWZ5LWpzb24gKGRlbGV0ZS1kZXBlbmRlbmNpZXMKKyAgICAgICAgICAgICAgIGAo ImJyZnMiCisgICAgICAgICAgICAgICAgICJicm93c2VyaWZ5IgorICAgICAgICAgICAgICAgICAi Y292ZXJhbGxzIgorICAgICAgICAgICAgICAgICAiaXN0YW5idWwiCisgICAgICAgICAgICAgICAg ICJrYXJtYSIKKyAgICAgICAgICAgICAgICAgImthcm1hLWJyb3dzZXJpZnkiCisgICAgICAgICAg ICAgICAgICJrYXJtYS1jaHJvbWUtbGF1bmNoZXIiCisgICAgICAgICAgICAgICAgICJrYXJtYS1t b2NoYSIKKyAgICAgICAgICAgICAgICAgIm1vY2hhIgorICAgICAgICAgICAgICAgICAibW9jaGEt bGNvdi1yZXBvcnRlciIKKyAgICAgICAgICAgICAgICAgInhvIikpKSkpKSkpCiAgICAgKGlucHV0 cyAobGlzdCBub2RlLW1zLWJvb3RzdHJhcCkpCiAgICAgKGhvbWUtcGFnZSAiaHR0cHM6Ly9naXRo dWIuY29tL3Zpc2lvbm1lZGlhL2RlYnVnI3JlYWRtZSIpCiAgICAgKHByb3BlcnRpZXMgJygoaGlk ZGVuPyAuICN0KSkpCkBAIC01MjYsMTIgKzUyOSwxMyBAQCAoZGVmaW5lLXB1YmxpYyBub2RlLWxs cGFyc2UtYnVpbGRlci1ib290c3RyYXAKICAgICAgICAobW9kaWZ5LXBoYXNlcyAlc3RhbmRhcmQt cGhhc2VzCiAgICAgICAgICAoYWRkLWFmdGVyICdwYXRjaC1kZXBlbmRlbmNpZXMgJ2RlbGV0ZS1k ZXBlbmRlbmNpZXMKICAgICAgICAgICAgKGxhbWJkYSBfCi0gICAgICAgICAgICAgKGRlbGV0ZS1k ZXBlbmRlbmNpZXMgYCgiQHR5cGVzL21vY2hhIgotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIkB0eXBlcy9ub2RlIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIm1vY2hhIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRzLW5vZGUi Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHNsaW50IgotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVzY3JpcHQiKSkpKQorICAgICAgICAgICAg IChtb2RpZnktanNvbiAoZGVsZXRlLWRlcGVuZGVuY2llcworICAgICAgICAgICAgICAgYCgiQHR5 cGVzL21vY2hhIgorICAgICAgICAgICAgICAgICAiQHR5cGVzL25vZGUiCisgICAgICAgICAgICAg ICAgICJtb2NoYSIKKyAgICAgICAgICAgICAgICAgInRzLW5vZGUiCisgICAgICAgICAgICAgICAg ICJ0c2xpbnQiCisgICAgICAgICAgICAgICAgICJ0eXBlc2NyaXB0IikpKSkpCiAgICAgICAgICAo cmVwbGFjZSAnYnVpbGQKICAgICAgICAgICAgKGxhbWJkYSogKCM6a2V5IGlucHV0cyAjOmFsbG93 LW90aGVyLWtleXMpCiAgICAgICAgICAgICAgKGxldCAoKGVzYnVpbGQgKHNlYXJjaC1pbnB1dC1m aWxlIGlucHV0cyAiL2Jpbi9lc2J1aWxkIikpKQpAQCAtNTg3LDEzICs1OTEsMTQgQEAgKGRlZmlu ZS1wdWJsaWMgbm9kZS1sbHBhcnNlLWZyb250ZW5kLWJvb3RzdHJhcAogICAgICAgIChtb2RpZnkt cGhhc2VzICVzdGFuZGFyZC1waGFzZXMKICAgICAgICAgIChhZGQtYWZ0ZXIgJ3BhdGNoLWRlcGVu ZGVuY2llcyAnZGVsZXRlLWRlcGVuZGVuY2llcwogICAgICAgICAgICAobGFtYmRhIGFyZ3MKLSAg ICAgICAgICAgICAoZGVsZXRlLWRlcGVuZGVuY2llcyBgKCJAdHlwZXMvZGVidWciCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQHR5cGVzL21vY2hhIgotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIkB0eXBlcy9ub2RlIgotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIm1vY2hhIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgInRzLW5vZGUiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHNs aW50IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVzY3JpcHQiKSkp KQorICAgICAgICAgICAgIChtb2RpZnktanNvbiAoZGVsZXRlLWRlcGVuZGVuY2llcworICAgICAg ICAgICAgICAgYCgiQHR5cGVzL2RlYnVnIgorICAgICAgICAgICAgICAgICAiQHR5cGVzL21vY2hh IgorICAgICAgICAgICAgICAgICAiQHR5cGVzL25vZGUiCisgICAgICAgICAgICAgICAgICJtb2No YSIKKyAgICAgICAgICAgICAgICAgInRzLW5vZGUiCisgICAgICAgICAgICAgICAgICJ0c2xpbnQi CisgICAgICAgICAgICAgICAgICJ0eXBlc2NyaXB0IikpKSkpCiAgICAgICAgICAocmVwbGFjZSAn YnVpbGQKICAgICAgICAgICAgKGxhbWJkYSogKCM6a2V5IGlucHV0cyAjOmFsbG93LW90aGVyLWtl eXMpCiAgICAgICAgICAgICAgKGxldCAoKGVzYnVpbGQgKHNlYXJjaC1pbnB1dC1maWxlIGlucHV0 cyAiL2Jpbi9lc2J1aWxkIikpKQpAQCAtNjQ4LDE1ICs2NTMsMTYgQEAgKGRlZmluZS1wdWJsaWMg bm9kZS1sbHBhcnNlLWJvb3RzdHJhcAogICAgICAgIChtb2RpZnktcGhhc2VzICVzdGFuZGFyZC1w aGFzZXMKICAgICAgICAgIChhZGQtYWZ0ZXIgJ3BhdGNoLWRlcGVuZGVuY2llcyAnZGVsZXRlLWRl cGVuZGVuY2llcwogICAgICAgICAgICAobGFtYmRhIGFyZ3MKLSAgICAgICAgICAgICAoZGVsZXRl LWRlcGVuZGVuY2llcyBgKCJAdHlwZXMvZGVidWciCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiQHR5cGVzL21vY2hhIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIkB0eXBlcy9ub2RlIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ImVzbSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsbHBhcnNlLXRlc3Qt Zml4dHVyZSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2NoYSIKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0cy1ub2RlIgotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgInRzbGludCIKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJ0eXBlc2NyaXB0IikpKSkKKyAgICAgICAgICAgICAobW9kaWZ5LWpzb24g KGRlbGV0ZS1kZXBlbmRlbmNpZXMKKyAgICAgICAgICAgICAgIGAoIkB0eXBlcy9kZWJ1ZyIKKyAg ICAgICAgICAgICAgICAgIkB0eXBlcy9tb2NoYSIKKyAgICAgICAgICAgICAgICAgIkB0eXBlcy9u b2RlIgorICAgICAgICAgICAgICAgICAiZXNtIgorICAgICAgICAgICAgICAgICAibGxwYXJzZS10 ZXN0LWZpeHR1cmUiCisgICAgICAgICAgICAgICAgICJtb2NoYSIKKyAgICAgICAgICAgICAgICAg InRzLW5vZGUiCisgICAgICAgICAgICAgICAgICJ0c2xpbnQiCisgICAgICAgICAgICAgICAgICJ0 eXBlc2NyaXB0IikpKSkpCiAgICAgICAgICAocmVwbGFjZSAnYnVpbGQKICAgICAgICAgICAgKGxh bWJkYSogKCM6a2V5IGlucHV0cyAjOmFsbG93LW90aGVyLWtleXMpCiAgICAgICAgICAgICAgKGxl dCAoKGVzYnVpbGQgKHNlYXJjaC1pbnB1dC1maWxlIGlucHV0cyAiL2Jpbi9lc2J1aWxkIikpKQpk aWZmIC0tZ2l0IGEvZ3VpeC9idWlsZC9ub2RlLWJ1aWxkLXN5c3RlbS5zY20gYi9ndWl4L2J1aWxk L25vZGUtYnVpbGQtc3lzdGVtLnNjbQppbmRleCBkZjdlYTc3NzRjLi5lYTIzZDkyYTA1IDEwMDY0 NAotLS0gYS9ndWl4L2J1aWxkL25vZGUtYnVpbGQtc3lzdGVtLnNjbQorKysgYi9ndWl4L2J1aWxk L25vZGUtYnVpbGQtc3lzdGVtLnNjbQpAQCAtMzEsMTggKzMxLDE0IEBAIChkZWZpbmUtbW9kdWxl IChndWl4IGJ1aWxkIG5vZGUtYnVpbGQtc3lzdGVtKQogICAjOnVzZS1tb2R1bGUgKHNyZmkgc3Jm aS0xKQogICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS03MSkKICAgIzpleHBvcnQgKCVzdGFuZGFy ZC1waGFzZXMKLSAgICAgICAgICAgIHdpdGgtYXRvbWljLWpzb24tZmlsZS1yZXBsYWNlbWVudAog ICAgICAgICAgICAgZGVsZXRlLWRlcGVuZGVuY2llcwotICAgICAgICAgICAgbm9kZS1idWlsZCkp Ci0KLShkZWZpbmUqICh3aXRoLWF0b21pYy1qc29uLWZpbGUtcmVwbGFjZW1lbnQgcHJvYwotICAj Om9wdGlvbmFsIChmaWxlICJwYWNrYWdlLmpzb24iKSkKLSAgIkxpa2UgJ3dpdGgtYXRvbWljLWZp bGUtcmVwbGFjZW1lbnQnLCBidXQgUFJPQyBpcyBjYWxsZWQgd2l0aCBhIHNpbmdsZQotYXJndW1l bnQtLS10aGUgcmVzdWx0IG9mIHBhcnNpbmcgRklMRSdzIGNvbnRlbnRzIGFzIGpzb24tLS1hbmQg c2hvdWxkIGEgdmFsdWUKLXRvIGJlIHdyaXR0ZW4gYXMganNvbiB0byB0aGUgcmVwbGFjZW1lbnQg RklMRS4iCi0gICh3aXRoLWF0b21pYy1maWxlLXJlcGxhY2VtZW50IGZpbGUKLSAgICAobGFtYmRh IChpbiBvdXQpCi0gICAgICAoc2NtLT5qc29uIChwcm9jIChqc29uLT5zY20gaW4pKSBvdXQpKSkp CisgICAgICAgICAgICBkZWxldGUtZGV2LWRlcGVuZGVuY2llcworICAgICAgICAgICAgZGVsZXRl LWZpZWxkcworICAgICAgICAgICAgbW9kaWZ5LWpzb24KKyAgICAgICAgICAgIG1vZGlmeS1qc29u LWZpZWxkcworICAgICAgICAgICAgbm9kZS1idWlsZAorICAgICAgICAgICAgcmVwbGFjZS1maWVs ZHMKKyAgICAgICAgICAgIHdpdGgtYXRvbWljLWpzb24tZmlsZS1yZXBsYWNlbWVudCkpCiAKIChk ZWZpbmUqIChhc3NvYy1yZWYqIGFsaXN0IGtleSAjOm9wdGlvbmFsIGRlZmF1bHQpCiAgICJMaWtl IGFzc29jLXJlZiwgYnV0IHJldHVybiBERUZBVUxUIGluc3RlYWQgb2YgI2YgaWYgbm8gdmFsdWUg ZXhpc3RzLiIKQEAgLTcyLDYgKzY4LDE2MSBAQCAoZGVmaW5lKiAoYWxpc3QtdXBkYXRlIGFsaXN0 IGtleSBwcm9jICM6b3B0aW9uYWwgKD0gZXF1YWw/KSkKICAgICAgIChhY29ucyBrZXkgKHByb2Mg KGNkciBwYWlyKSkgcmVzdCkKICAgICAgIGFsaXN0KSkpCiAKKzs7OworOzs7IHBhY2thZ2UuanNv biBtb2RpZmljYXRpb24gcHJvY2VkdXJlcworOzs7CisKKyhkZWZpbmUqICh3aXRoLWF0b21pYy1q c29uLWZpbGUtcmVwbGFjZW1lbnQgcHJvYworICAjOm9wdGlvbmFsIChmaWxlICJwYWNrYWdlLmpz b24iKSkKKyAgIkxpa2UgJ3dpdGgtYXRvbWljLWZpbGUtcmVwbGFjZW1lbnQnLCBidXQgUFJPQyBp cyBjYWxsZWQgd2l0aCBhIHNpbmdsZQorYXJndW1lbnQtLS10aGUgcmVzdWx0IG9mIHBhcnNpbmcg RklMRSdzIGNvbnRlbnRzIGFzIGpzb24tLS1hbmQgc2hvdWxkIGEgdmFsdWUKK3RvIGJlIHdyaXR0 ZW4gYXMganNvbiB0byB0aGUgcmVwbGFjZW1lbnQgRklMRS4iCisgICh3aXRoLWF0b21pYy1maWxl LXJlcGxhY2VtZW50IGZpbGUKKyAgICAobGFtYmRhIChpbiBvdXQpCisgICAgICAoc2NtLT5qc29u IChwcm9jIChqc29uLT5zY20gaW4pKSBvdXQpKSkpCisKKyhkZWZpbmUqIChtb2RpZnktanNvbiAj OmtleSAoZmlsZSAicGFja2FnZS5qc29uIikgIzpyZXN0IGFsbC1hcmd1bWVudHMpCisgICJQcm92 aWRlIHBhY2thZ2UuanNvbiBtb2RpZnlpbmcgY2FsbGJhY2tzIHN1Y2ggYXMgKGRlbGV0ZS1kZXBl bmRlbmNpZXMgLi4uKSIKKyAgKGxldAorICAgICgKKyAgICAgIChtb2RpZmljYXRpb25zCisgICAg ICAgIChsZXQgbG9vcCAoKGFyZ3VtZW50cyBhbGwtYXJndW1lbnRzKSkKKyAgICAgICAgICAoY29u ZAorICAgICAgICAgICAgKChudWxsPyBhcmd1bWVudHMpICcoKSkKKyAgICAgICAgICAgICgoa2V5 d29yZD8gKGNhciBhcmd1bWVudHMpKSAobG9vcCAoY2RkciBhcmd1bWVudHMpKSkKKyAgICAgICAg ICAgIChlbHNlIChjb25zIChjYXIgYXJndW1lbnRzKSAobG9vcCAoY2RyIGFyZ3VtZW50cykpKSkp KSkpCisgICAgKHdpdGgtYXRvbWljLWpzb24tZmlsZS1yZXBsYWNlbWVudAorICAgICAgKGxhbWJk YSAocGFja2FnZSkKKyAgICAgICAgKGZvbGQKKyAgICAgICAgICAobGFtYmRhIChtb2RpZmljYXRp b24gcGFja2FnZSkKKyAgICAgICAgICAgIChtb2RpZmljYXRpb24gcGFja2FnZSkpCisgICAgICAg ICAgcGFja2FnZQorICAgICAgICAgIG1vZGlmaWNhdGlvbnMpKQorICAgICAgZmlsZSkpKQorCiso ZGVmaW5lIChkZWxldGUtZGVwZW5kZW5jaWVzIGRlcGVuZGVuY2llcy10by1yZW1vdmUpCisgICJS ZXdyaXRlICdwYWNrYWdlLmpzb24nIHRvIGFsbG93IHRoZSBidWlsZCB0byBwcm9jZWVkIHdpdGhv dXQgcGFja2FnZXMKK2xpc3RlZCBpbiAnZGVwZW5kZW5jaWVzLXRvLXJlbW92ZScsIGEgbGlzdCBv ZiBzdHJpbmdzIG5hbWluZyBucG0gcGFja2FnZXMuCisKK1RvIHByZXZlbnQgdGhlIGRlbGV0ZWQg ZGVwZW5kZW5jaWVzIGZyb20gYmVpbmcgcmVpbnRyb2R1Y2VkLCB1c2UgdGhpcyBmdW5jdGlvbgor b25seSBhZnRlciB0aGUgJ3BhdGNoLWRlcGVuZGVuY2llcycgcGhhc2UuIgorICAobGFtYmRhIChw a2ctbWV0YSkKKyAgICAoZm9sZAorICAgICAgKGxhbWJkYSAoZGVwZW5kZW5jeS1rZXkgcGtnLW1l dGEpCisgICAgICAgIChhbGlzdC11cGRhdGUKKyAgICAgICAgICBwa2ctbWV0YQorICAgICAgICAg IGRlcGVuZGVuY3kta2V5CisgICAgICAgICAgKGxhbWJkYSAoZGVwZW5kZW5jaWVzKQorICAgICAg ICAgICAgKHJlbW92ZQorICAgICAgICAgICAgICAobGFtYmRhIChkZXBlbmRlbmN5KQorICAgICAg ICAgICAgICAgIChtZW1iZXIgKGNhciBkZXBlbmRlbmN5KSBkZXBlbmRlbmNpZXMtdG8tcmVtb3Zl KSkKKyAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzKSkpKQorICAgICAgcGtnLW1ldGEKKyAgICAg IChsaXN0CisgICAgICAgICJkZXZEZXBlbmRlbmNpZXMiCisgICAgICAgICJkZXBlbmRlbmNpZXMi CisgICAgICAgICJwZWVyRGVwZW5kZW5jaWVzIgorICAgICAgICAib3B0aW9uYWxEZXBlbmRlbmNp ZXMiKSkpKQorCisoZGVmaW5lKiAobW9kaWZ5LWpzb24tZmllbGRzCisgICAgZmllbGRzCisgICAg ZmllbGQtbW9kaWZpZXIKKyAgICAjOmtleQorICAgICAgKGZpZWxkLXBhdGgtbWFwcGVyIChsYW1i ZGEgKGZpZWxkKSBmaWVsZCkpCisgICAgICAoaW5zZXJ0PyAjZikKKyAgICAgIChzdHJpY3Q/ICN0 KSkKKyAgIlByb3ZpZGVzIGEgbGFtYmRhIHRvIHN1cHBseSB0byBtb2RpZnktanNvbiB3aGljaCBt b2RpZmllcyB0aGUgc3BlY2lmaWVkCisganNvbiBmaWxlLgorLSBgZmllbGRzYCBpcyBhIGxpc3Qg cHJvY2VkdXJlLXNwZWNpZmljIGRhdGEgc3RydWN0dXJlcyB3aGljaCBzaG91bGQgaW5jbHVkZQor IHRoZSBkZWZpbml0aW9uIG9mIGEgYGZpZWxkLXBhdGhgIGluIG9uZSBvZiB0d28gc3ludGF4ZXM6 IGRvdC1zeW50YXggc3RyaW5nCisgc3VjaCBhcyBgXCJkZXZEZXBlbmRlbmNpZXMuZXNidWlsZFwi YCwgb3IgYSBsaXN0IG9mIHN0cmluZ3Mgc3VjaCBhcworIGAobGlzdCBcImRldkRlcGVuZGVuY2ll c1wiIFwiZXNidWlsZFwiKWAuCistIGBmaWVsZC1tb2RpZmllcmAgaXMgYSBsYW1iZGEgd2hpY2gg aXMgaW52b2tlZCBhdCB0aGUgcG9zaXRpb24gb2YgdGhlIGZpZWxkLgorIEl0IGlzIHN1cHBsaWVk IHdpdGggdGhlIGN1cnJlbnQgZmllbGQgZGVmaW5pdGlvbiwgdGhlIGFzc29jaWF0aW9uIGxpc3Qg KGFsaXN0KQorIGF0IHRoZSBmaWVsZCBsb2NhdGlvbiBpbiB0aGUganNvbiBmaWxlLCBhbmQgdGhl IGZpZWxkIG5hbWUsIGFsc28gY2FsbGVkIGBrZXlgLgorLSBgZmllbGQtcGF0aC1tYXBwZXJgIGlz IGEgbGFtYmRhIHdoaWNoIGluc3RydWN0cyB3aGVyZSB0aGUgZmllbGQtcGF0aCBpcworIGxvY2F0 ZWQgd2l0aGluIHRoZSBmaWVsZCBzdHJ1Y3R1cmUuCistIGBpbnNlcnQ/YCBhbGxvd3MgdGhlIGNy ZWF0aW9uIG9mIHRoZSBmaWVsZCBhbmQgYW55IG1pc3NpbmcgaW50ZXJtZWRpYXRlCisgZmllbGRz LgorLSBgc3RyaWN0P2AgY2F1c2VzIGFuIGVycm9yIHRvIGJlIHRocm93biBpZiB0aGUgZXhhY3Qg ZmllbGQtcGF0aCBpcyBub3QgZm91bmQKKyBpbiB0aGUgZGF0YSIKKyAgKGxhbWJkYSAocGFja2Fn ZSkKKyAgICAoZm9sZAorICAgICAgKGxhbWJkYSAoZmllbGQgcGFja2FnZSkKKyAgICAgICAgKGxl dCoKKyAgICAgICAgICAoCisgICAgICAgICAgICAoZmllbGQtcGF0aCAoZmllbGQtcGF0aC1tYXBw ZXIgZmllbGQpKQorICAgICAgICAgICAgKAorICAgICAgICAgICAgICBmaWVsZC1wYXRoCisgICAg ICAgICAgICAgIChjb25kCisgICAgICAgICAgICAgICAgKChzdHJpbmc/IGZpZWxkLXBhdGgpCisg ICAgICAgICAgICAgICAgICAoc3RyaW5nLXNwbGl0IGZpZWxkLXBhdGggI1wuKSkKKyAgICAgICAg ICAgICAgICAoKGFuZCAobGlzdD8gZmllbGQtcGF0aCkgKGV2ZXJ5IHN0cmluZz8gZmllbGQtcGF0 aCkpCisgICAgICAgICAgICAgICAgICBmaWVsZC1wYXRoKQorICAgICAgICAgICAgICAgIChlbHNl CisgICAgICAgICAgICAgICAgICAoZXJyb3IKKyAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1h cHBlbmQKKyAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBmaWVsZCB2YWx1ZSBwcm92aWRl ZCwgZXhwZWN0aW5nIGEgc3RyaW5nIG9yIGEgIgorICAgICAgICAgICAgICAgICAgICAgICJsaXN0 IG9mIHN0cmluZyBidXQgaW5zdGVhZCBnb3Q6ICIKKyAgICAgICAgICAgICAgICAgICAgICAod2l0 aC1vdXRwdXQtdG8tc3RyaW5nIChsYW1iZGEgXyAoZGlzcGxheSBmaWVsZC1wYXRoKSkpKSkpCisg ICAgICAgICAgICAgICkpKQorICAgICAgICAgIChsZXQgbG9vcAorICAgICAgICAgICAgKAorICAg ICAgICAgICAgICAoZGF0YSBwYWNrYWdlKQorICAgICAgICAgICAgICAoZmllbGQtcGF0aCBmaWVs ZC1wYXRoKSkKKyAgICAgICAgICAgIChsZXQqCisgICAgICAgICAgICAgICgKKyAgICAgICAgICAg ICAgICAoa2V5IChjYXIgZmllbGQtcGF0aCkpCisgICAgICAgICAgICAgICAgKGRhdGEKKyAgICAg ICAgICAgICAgICAgIChpZiAoYW5kIChub3QgKGFzc29jIGtleSBkYXRhKSkgaW5zZXJ0PykKKyAg ICAgICAgICAgICAgICAgICAgKGFjb25zIGtleSAnKCkgZGF0YSkKKyAgICAgICAgICAgICAgICAg ICAgZGF0YSkpKQorICAgICAgICAgICAgICAoaWYgKG5vdCAoYXNzb2Mga2V5IGRhdGEpKQorICAg ICAgICAgICAgICAgIChpZiBzdHJpY3Q/CisgICAgICAgICAgICAgICAgICAoZXJyb3IgKHN0cmlu Zy1hcHBlbmQKKyAgICAgICAgICAgICAgICAgICAgIktleSAnIiBrZXkgIicgd2FzIG5vdCBmb3Vu ZCBpbiBkYXRhOiAiCisgICAgICAgICAgICAgICAgICAgICh3aXRoLW91dHB1dC10by1zdHJpbmcg KGxhbWJkYSBfIChkaXNwbGF5IGRhdGEpKSkpKQorICAgICAgICAgICAgICAgICAgZGF0YSkKKyAg ICAgICAgICAgICAgICAoaWYgKD0gKGxlbmd0aCBmaWVsZC1wYXRoKSAxKQorICAgICAgICAgICAg ICAgICAgKGZpZWxkLW1vZGlmaWVyIGZpZWxkIGRhdGEga2V5KQorICAgICAgICAgICAgICAgICAg KGFzc29jLXNldCEKKyAgICAgICAgICAgICAgICAgICAgZGF0YQorICAgICAgICAgICAgICAgICAg ICBrZXkKKyAgICAgICAgICAgICAgICAgICAgKGxvb3AgKGFzc29jLXJlZiBkYXRhIGtleSkgKGNk ciBmaWVsZC1wYXRoKSkpKSkpKSkpCisgICAgICBwYWNrYWdlCisgICAgICBmaWVsZHMpKSkKKwor KGRlZmluZSogKGRlbGV0ZS1maWVsZHMgZmllbGRzICM6a2V5IChzdHJpY3Q/ICN0KSkKKyAgIlBy b3ZpZGVzIGEgbGFtYmRhIHRvIHN1cHBseSB0byBtb2RpZnktanNvbiB3aGljaCBkZWxldGVzIHRo ZSBzcGVjaWZpZWQKKyBgZmllbGRzYCB3aGljaCBpcyBhIGxpc3Qgb2YgZmllbGQtcGF0aHMgYXMg bWVudGlvbmVkIGluIGBtb2RpZnktanNvbi1maWVsZHNgLgorIEV4YW1wbGVzOgorICAoZGVsZXRl LWZpZWxkcyAnKAorICAgIChcInBhdGhcIiBcInRvXCIgXCJmaWVsZFwiKQorICAgIFwicGF0aC50 by5vdGhlci5maWVsZFwiKSkiCisgIChtb2RpZnktanNvbi1maWVsZHMKKyAgICBmaWVsZHMKKyAg ICAobGFtYmRhIChfIGRhdGEga2V5KQorICAgICAgKGFzc29jLXJlbW92ZSEgZGF0YSBrZXkpKQor ICAgICM6c3RyaWN0PyBzdHJpY3Q/KSkKKworKGRlZmluZSogKHJlcGxhY2UtZmllbGRzIGZpZWxk cyAjOmtleSAoc3RyaWN0PyAjdCkpCisgICJQcm92aWRlcyBhIGxhbWJkYSB0byBzdXBwbHkgdG8g bW9kaWZ5LWpzb24gd2hpY2ggcmVwbGFjZXMgdGhlIHZhbHVlIG9mIHRoZQorIHN1cHBsaWVkIGZp ZWxkLiBgZmllbGRzYCBpcyBhIGxpc3Qgb2YgcGFpcnMsIHdoZXJlIHRoZSBmaXJzdCBlbGVtZW50 IGlzIHRoZQorIGZpZWxkLXBhdGggYW5kIHRoZSBzZWNvbmQgZWxlbWVudCBpcyB0aGUgdmFsdWUg dG8gcmVwbGFjZSB0aGUgdGFyZ2V0IHdpdGguCisgRXhhbXBsZXM6CisgIChyZXBsYWNlLWZpZWxk cyAnKAorICAgICgoXCJwYXRoXCIgXCJ0b1wiIFwiZmllbGRcIikgXCJuZXcgZmllbGQgdmFsdWVc IikKKyAgICAoXCJwYXRoLnRvLm90aGVyLmZpZWxkXCIgXCJuZXcgZmllbGQgdmFsdWVcIikpKSIK KyAgKG1vZGlmeS1qc29uLWZpZWxkcworICAgIGZpZWxkcworICAgIChsYW1iZGEgKGZpZWxkIGRh dGEga2V5KQorICAgICAgKGFzc29jLXNldCEgZGF0YSBrZXkgKGNkciBmaWVsZCkpKQorICAgICM6 ZmllbGQtcGF0aC1tYXBwZXIgKGxhbWJkYSAoZmllbGQpIChjYXIgZmllbGQpKQorICAgICM6c3Ry aWN0PyBzdHJpY3Q/KSkKKworKGRlZmluZSAoZGVsZXRlLWRldi1kZXBlbmRlbmNpZXMpCisgIChk ZWxldGUtZmllbGRzIChsaXN0ICJkZXZEZXBlbmRlbmNpZXMiKSAjOnN0cmljdCAjZikpCisKIDs7 OwogOzs7IFBoYXNlcy4KIDs7OwpAQCAtMTQ0LDMxICsyOTUsNiBAQCAoZGVmaW5lKiAocGF0Y2gt ZGVwZW5kZW5jaWVzICM6a2V5IGlucHV0cyAjOmFsbG93LW90aGVyLWtleXMpCiAgICAgICAgICAg ICAgICAgICAoYXNzb2MtcmVmKiBwa2ctbWV0YSAiZGVwZW5kZW5jaWVzIiAnKCkpKSkpKSkpKSkK ICAgI3QpCiAKLShkZWZpbmUgKGRlbGV0ZS1kZXBlbmRlbmNpZXMgZGVwZW5kZW5jaWVzLXRvLXJl bW92ZSkKLSAgIlJld3JpdGUgJ3BhY2thZ2UuanNvbicgdG8gYWxsb3cgdGhlIGJ1aWxkIHRvIHBy b2NlZWQgd2l0aG91dCBwYWNrYWdlcwotbGlzdGVkIGluICdkZXBlbmRlbmNpZXMtdG8tcmVtb3Zl JywgYSBsaXN0IG9mIHN0cmluZ3MgbmFtaW5nIG5wbSBwYWNrYWdlcy4KLQotVG8gcHJldmVudCB0 aGUgZGVsZXRlZCBkZXBlbmRlbmNpZXMgZnJvbSBiZWluZyByZWludHJvZHVjZWQsIHVzZSB0aGlz IGZ1bmN0aW9uCi1vbmx5IGFmdGVyIHRoZSAncGF0Y2gtZGVwZW5kZW5jaWVzJyBwaGFzZS4iCi0g ICh3aXRoLWF0b21pYy1qc29uLWZpbGUtcmVwbGFjZW1lbnQKLSAgICAobGFtYmRhIChwa2ctbWV0 YSkKLSAgICAgIChmb2xkCi0gICAgICAgIChsYW1iZGEgKGRlcGVuZGVuY3kta2V5IHBrZy1tZXRh KQotICAgICAgICAgIChhbGlzdC11cGRhdGUKLSAgICAgICAgICAgIHBrZy1tZXRhCi0gICAgICAg ICAgICBkZXBlbmRlbmN5LWtleQotICAgICAgICAgICAgKGxhbWJkYSAoZGVwZW5kZW5jaWVzKQot ICAgICAgICAgICAgICAocmVtb3ZlCi0gICAgICAgICAgICAgICAgKGxhbWJkYSAoZGVwZW5kZW5j eSkKLSAgICAgICAgICAgICAgICAgIChtZW1iZXIgKGNhciBkZXBlbmRlbmN5KSBkZXBlbmRlbmNp ZXMtdG8tcmVtb3ZlKSkKLSAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMpKSkpCi0gICAgICAg IHBrZy1tZXRhCi0gICAgICAgIChsaXN0Ci0gICAgICAgICAgImRldkRlcGVuZGVuY2llcyIKLSAg ICAgICAgICAiZGVwZW5kZW5jaWVzIgotICAgICAgICAgICJwZWVyRGVwZW5kZW5jaWVzIgotICAg ICAgICAgICJvcHRpb25hbERlcGVuZGVuY2llcyIpKSkpKQotCiAoZGVmaW5lKiAoZGVsZXRlLWxv Y2tmaWxlcyAjOmtleSBpbnB1dHMgIzphbGxvdy1vdGhlci1rZXlzKQogICAiRGVsZXRlICdwYWNr YWdlLWxvY2suanNvbicsICd5YXJuLmxvY2snLCBhbmQgJ25wbS1zaHJpbmt3cmFwLmpzb24nLCBp ZiB0aGV5CiBleGlzdC4iCi0tIAoyLjQ2LjAKCg== --000000000000e12ff3062a6fccd4--
guix-patches@HIDDEN
:bug#74900
; Package guix-patches
.
Full text available.Received: (at 74900) by debbugs.gnu.org; 29 Dec 2024 21:57:59 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Dec 29 16:57:59 2024 Received: from localhost ([127.0.0.1]:56442 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tS1IL-0007rH-FF for submit <at> debbugs.gnu.org; Sun, 29 Dec 2024 16:57:59 -0500 Received: from mail-vs1-f46.google.com ([209.85.217.46]:53363) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <d.khodabakhsh@HIDDEN>) id 1tS1IH-0007r7-Bz for 74900 <at> debbugs.gnu.org; Sun, 29 Dec 2024 16:57:56 -0500 Received: by mail-vs1-f46.google.com with SMTP id ada2fe7eead31-4afdf096fc5so1683651137.2 for <74900 <at> debbugs.gnu.org>; Sun, 29 Dec 2024 13:57:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1735509413; x=1736114213; darn=debbugs.gnu.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=y29xI7/HjQNcavu2BLXnDB4H2II5x3SK1yC0ImOdzC0=; b=jpU3YMHFhyPq6xC4D7T6L6VbuTlh2rQ2OhX4NjMOltOpyrgX9ir618Ue2u1NQX89rE FvW1x5um5odX2ZFGyxQg9vj1FJJUNrqU4nNVs+c34zj9yuw4hieK7eJn+XOZ5vzmGm0c krmhdiKIaoZElEfnN2i7ygd46byPjj5m/bF/S13hDE7sGaKSFEs+RDO5UBt07GixzW4P Rynyqk7m7DyvJ8EadZPee7xJ1cXx3yVUYcOE9ipSz5vZdHE0aF+jYnUpgRDRIMOAf1Fg LV27Lwhf/HVnXSWFelFu6qlvWXBz6+MjmsVptESe7EV9aWNS/TQ72iBn28j+WYhiQk6B qoqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1735509413; x=1736114213; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=y29xI7/HjQNcavu2BLXnDB4H2II5x3SK1yC0ImOdzC0=; b=NjI/uMYmTEVkifQA1rUY3vpbaKPDnbZ0vhVceQ8mNcLN1iPxid+W9kBRZUVB5meZfQ zACjBlvcQE3KKpzrHKnEOqas/pT5U1pGegN/IOEXEW1I8vlSRJUnUt0Azl/NwqmL21/3 CSFCh0Op3xyweul0y+/W9pGU2yutwRORgoiALGYYN8D37OWkyAtYP05vhMB/LUkgn01R XbmIjDVXyyjiuQzSq3kcHq/6+Xo9wjV6lI8gTMc+FJNbIsEqlaVJkTkCd7JBOb3Ykplj ILgjBICIXkS4JqZdDBJZq/mmh+lQkIzQRAFgW3tYxpVrYJkYn7AMdfE0zcppE7e/tA/e W14g== X-Gm-Message-State: AOJu0YziomzaQcr+KZjfCNB+kiXuDoezFF5wNOE4b05wuRyaqqfQYtS6 2dKtAiIhc57e6vvrKNduhHU/HtrtMN69W9J7PLwSGi/ELYLJwmu9cJ9aJqo8lf+hgukNWcH4Ter D9acEDLyCjwckpTw4bOt0rWXd5hwywETC X-Gm-Gg: ASbGnctIbHyJElQV2c8u8QWtin0LoHMgqKXtO2meStpnm8P04D2mGsP2Z9SRZv7VtTt djHqGcXY4f0GQ00ywbqNxKhLuQ8rtoJFGZEH2A/u8 X-Google-Smtp-Source: AGHT+IGbXipe6KoakFjQoQkgHO4oonWKQxOnlWRJQQZnEFLDSCYmrZgr/CuOvVSLJE91kE8aW7wrD2bDhJTJOV8kxQ8= X-Received: by 2002:a05:6102:5487:b0:4af:ba51:a25f with SMTP id ada2fe7eead31-4b2cc463e8amr27866700137.20.1735509412517; Sun, 29 Dec 2024 13:56:52 -0800 (PST) MIME-Version: 1.0 From: Daniel Khodabakhsh <d.khodabakhsh@HIDDEN> Date: Sun, 29 Dec 2024 21:56:41 +0000 Message-ID: <CAADuFnLPZOF-7dT36ZwOR=L6v7YWbnNsZYnRHt2Q9XUpCTzDfQ@HIDDEN> Subject: [PATCH 1/2] Replace (guix build json) with (json) in node-build-system To: 74900 <at> debbugs.gnu.org Content-Type: multipart/mixed; boundary="00000000000009b154062a6fc654" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 74900 X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) --00000000000009b154062a6fc654 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable This change replaces the use of (guix build json) with (json) for the node ecosystem. Since guile-json is a dependency of Guix, and it's used elsewhere in the project, it makes sense to use this instead of rolling our own JSON implementation with (guix build json). (guix build json) also has a few issues: - write-json escapes forward slashes in strings for some reason ("/" become "\/") - read-json produces a structure similar to an association list but with '@' to indicate an object, making it not possible to use association list procedures directly. This is one step to move away from (guix build json), there will be other changes to remove the other uses of it. Signed-off-by: Daniel Khodabakhsh <d.khodabakhsh@HIDDEN> Change-Id: I9fd5152a98b6a241d414e9a94ab179c9cabcfb85 --- gnu/packages/node-xyz.scm | 148 ++++++++++++------------- guix/build-system/node.scm | 6 +- guix/build/node-build-system.scm | 180 ++++++++++++------------------- 3 files changed, 139 insertions(+), 195 deletions(-) diff --git a/gnu/packages/node-xyz.scm b/gnu/packages/node-xyz.scm index e98eda2a01..ec3f9fbfb1 100644 --- a/gnu/packages/node-xyz.scm +++ b/gnu/packages/node-xyz.scm @@ -7,6 +7,7 @@ ;;; Copyright =C2=A9 2021 Dhruvin Gandhi <contact@HIDDEN> ;;; Copyright =C2=A9 2022 Nicolas Graves <ngraves@HIDDEN> ;;; Copyright =C2=A9 2023 Jelle Licht <jlicht@HIDDEN> +;;; Copyright =C2=A9 2024 Daniel Khodabakhsh <d.khodabakhsh@HIDDEN> ;;; ;;; This file is part of GNU Guix. ;;; @@ -24,14 +25,14 @@ ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. (define-module (gnu packages node-xyz) - #:use-module ((guix licenses) #:prefix license:) #:use-module (gnu packages sqlite) #:use-module (gnu packages python) #:use-module (gnu packages web) + #:use-module (guix build-system node) #:use-module (guix gexp) - #:use-module (guix packages) #:use-module (guix git-download) - #:use-module (guix build-system node)) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages)) ;;; ;;; Please: Try to add new module packages in alphabetic order. @@ -69,19 +70,17 @@ (define-public node-acorn ;; it would try to use the build environment and would block = the ;; automatic building by other packages making use of node-ac= orn. ;; TODO: Add utility function - (with-atomic-json-file-replacement "package.json" - (match-lambda - (('@ . pkg-meta-alist) - (cons '@ (map (match-lambda - (("scripts" @ . scripts-alist) - `("scripts" @ ,@(filter (match-lambda - (("prepare" .= _) - #f) - (_ - #t)) - scripts-alist))= ) - (other other)) - pkg-meta-alist))))))) + (with-atomic-json-file-replacement (lambda (pkg-meta-alist) + (map + (match-lambda + (("scripts" . scripts-alist) + (cons "scripts" (filter + (match-lambda + (("prepare" . _) #f) + (_ #t)) + scripts-alist))) + (other other)) + pkg-meta-alist))))) (replace 'build (lambda* (#:key inputs native-inputs #:allow-other-keys) (let ((esbuild (search-input-file (or native-inputs inputs) @@ -158,23 +157,17 @@ (define-public node-addon-api (lambda args (define new-test-script "echo stopping after pretest on Guix") - (with-atomic-json-file-replacement "package.json" - (match-lambda - (('@ . pkg-meta-alist) - (cons - '@ - (map (match-lambda - (("scripts" '@ . scripts-alist) - `("scripts" @ ,@(map (match-lambda - (("test" . _) - (cons "test" - new-test-script)) - (other - other)) - scripts-alist))) - (other - other)) - pkg-meta-alist)))))))))) + (with-atomic-json-file-replacement (lambda (pkg-meta-alist) + (map + (match-lambda + (("scripts" . scripts-alist) + (cons "scripts" (map + (match-lambda + (("test" . _) (cons "test" new-test-script)) + (other other)) + scripts-alist))) + (other other)) + pkg-meta-alist)))))))) (home-page "https://github.com/nodejs/node-addon-api") (synopsis "Node.js API (Node-API) header-only C++ wrappers") (description "This module contains header-only C++ wrapper classes whi= ch @@ -1223,22 +1216,19 @@ (define-public node-serialport-bindings "node-abi")))) (add-after 'chdir 'avoid-prebuild-install (lambda args - (with-atomic-json-file-replacement "package.json" - (match-lambda - (('@ . pkg-meta-alist) - (cons '@ (map (match-lambda - (("scripts" @ . scripts-alist) - `("scripts" @ ,@(filter (match-lambda - (("install" .= _) - #f) - (_ - #t)) - scripts-alist))= ) - (("gypfile" . _) - '("gypfile" . #f)) - (other - other)) - pkg-meta-alist)))))))) + (with-atomic-json-file-replacement (lambda (pkg-meta-alist) + (map + (match-lambda + (("scripts" . scripts-alist) + (cons "scripts" (filter + (match-lambda + (("install" . _) #f) + (_ #t)) + scripts-alist))) + (("gypfile" . _) + (cons "gypfile" #f)) + (other other)) + pkg-meta-alist)))))) #:tests? #f)) (synopsis "Abstract base class for Node SerialPort bindings") (description "Node SerialPort is a modular suite of Node.js packages f= or @@ -1524,39 +1514,33 @@ (define-public node-sqlite3 (substitute* ".npmignore" (("lib/binding") "#lib/binding # <- patched for Guix")) - (with-atomic-json-file-replacement "package.json" - (match-lambda - (('@ . pkg-meta-alist) - (match (assoc-ref pkg-meta-alist "binary") - (('@ . binary-alist) - ;; When it builds from source, node-pre-gyp supplies - ;; module_name and module_path based on the entries u= nder - ;; "binary" from "package.json", so this package's - ;; "binding.gyp" doesn't define them. Thus, we also n= eed - ;; to supply them. The GYP_DEFINES environment variab= le - ;; turns out to be the easiest way to make sure they = are - ;; propagated from npm to node-gyp to gyp. - (setenv "GYP_DEFINES" - (string-append - "module_name=3D" - (assoc-ref binary-alist "module_name") - " " - "module_path=3D" - (assoc-ref binary-alist "module_path"))))) - ;; We need to remove the install script from "package.js= on", - ;; as it would try to use node-pre-gyp and would block t= he - ;; automatic building performed by `npm install`. - (cons '@ (map (match-lambda - (("scripts" @ . scripts-alist) - `("scripts" @ ,@(filter (match-lambda - (("install" .= _) - #f) - (_ - #t)) - scripts-alist))= ) - (other - other)) - pkg-meta-alist)))))))))) + (with-atomic-json-file-replacement (lambda (pkg-meta-alist) + (let ((binary-alist (assoc-ref pkg-meta-alist "binary"))) + ;; When it builds from source, node-pre-gyp supplies + ;; module_name and module_path based on the entries under + ;; "binary" from "package.json", so this package's + ;; "binding.gyp" doesn't define them. Thus, we also need + ;; to supply them. The GYP_DEFINES environment variable + ;; turns out to be the easiest way to make sure they are + ;; propagated from npm to node-gyp to gyp. + (setenv "GYP_DEFINES" (string-append + "module_name=3D" + (assoc-ref binary-alist "module_name") + " module_path=3D" + (assoc-ref binary-alist "module_path")))) + ;; We need to remove the install script from "package.json"= , + ;; as it would try to use node-pre-gyp and would block the + ;; automatic building performed by `npm install`. + (map + (match-lambda + (("scripts" . scripts-alist) + (cons "scripts" (filter + (match-lambda + (("install" . _) #f) + (_ #t)) + scripts-alist))) + (other other)) + pkg-meta-alist)))))))) (home-page "https://github.com/mapbox/node-sqlite3") (synopsis "Node.js bindings for SQLite3") (description diff --git a/guix/build-system/node.scm b/guix/build-system/node.scm index 57fe5f6030..425b8cd9b3 100644 --- a/guix/build-system/node.scm +++ b/guix/build-system/node.scm @@ -4,6 +4,7 @@ ;;; Copyright =C2=A9 2021 Ludovic Court=C3=A8s <ludo@HIDDEN> ;;; Copyright =C2=A9 2021 Pierre Langlois <pierre.langlois@HIDDEN> ;;; Copyright =C2=A9 2021 Philip McGrath <philip@HIDDEN> +;;; Copyright =C2=A9 2024 Daniel Khodabakhsh <d.khodabakhsh@HIDDEN> ;;; ;;; This file is part of GNU Guix. ;;; @@ -36,7 +37,10 @@ (define-module (guix build-system node) (define %node-build-system-modules ;; Build-side modules imported by default. `((guix build node-build-system) - (guix build json) + (json) + (json builder) + (json parser) + (json record) ,@%default-gnu-imported-modules)) (define (default-node) diff --git a/guix/build/node-build-system.scm b/guix/build/node-build-syste= m.scm index fb23894bc1..df7ea7774c 100644 --- a/guix/build/node-build-system.scm +++ b/guix/build/node-build-system.scm @@ -4,6 +4,7 @@ ;;; Copyright =C2=A9 2019, 2021 Timothy Sample <samplet@HIDDEN> ;;; Copyright =C2=A9 2021, 2022 Philip McGrath <philip@HIDDEN> ;;; Copyright =C2=A9 2022 Liliana Marie Prikler <liliana.prikler@HIDDEN= > +;;; Copyright =C2=A9 2024 Daniel Khodabakhsh <d.khodabakhsh@HIDDEN> ;;; ;;; This file is part of GNU Guix. ;;; @@ -23,10 +24,10 @@ (define-module (guix build node-build-system) #:use-module ((guix build gnu-build-system) #:prefix gnu:) #:use-module (guix build utils) - #:use-module (guix build json) #:use-module (ice-9 ftw) #:use-module (ice-9 regex) #:use-module (ice-9 match) + #:use-module (json) #:use-module (srfi srfi-1) #:use-module (srfi srfi-71) #:export (%standard-phases @@ -34,13 +35,14 @@ (define-module (guix build node-build-system) delete-dependencies node-build)) -(define (with-atomic-json-file-replacement file proc) +(define* (with-atomic-json-file-replacement proc + #:optional (file "package.json")) "Like 'with-atomic-file-replacement', but PROC is called with a single argument---the result of parsing FILE's contents as json---and should a va= lue to be written as json to the replacement FILE." (with-atomic-file-replacement file (lambda (in out) - (write-json (proc (read-json in)) out)))) + (scm->json (proc (json->scm in)) out)))) (define* (assoc-ref* alist key #:optional default) "Like assoc-ref, but return DEFAULT instead of #f if no value exists." @@ -48,10 +50,6 @@ (define* (assoc-ref* alist key #:optional default) (#f default) ((_ . value) value))) -(define* (jsobject-ref obj key #:optional default) - (match obj - (('@ . alist) (assoc-ref* alist key default)))) - (define* (alist-pop alist key #:optional (=3D equal?)) "Return two values, the first pair in ALIST with key KEY, and the other elements. Equality calls are made as (=3D KEY ALISTCAR)." @@ -63,67 +61,17 @@ (define* (alist-pop alist key #:optional (=3D equal?)) (values (car after) (append before (cdr after))) (values #f before)))) -(define* (alist-update alist key proc #:optional default (=3D equal?)) +(define* (alist-update alist key proc #:optional (=3D equal?)) "Return an association list like ALIST, but with KEY mapped to the resul= t of PROC applied to the first value found under the comparison (=3D KEY ALISTC= AR). -If no such value exists, use DEFAULT instead. +If no such value exists, return the list unchanged. Unlike acons, this removes the previous association of KEY (assuming it is unique), but the result may still share storage with ALIST." (let ((pair rest (alist-pop alist key =3D))) - (acons key - (proc (if (pair? pair) - (cdr pair) - default)) - rest))) - -(define (jsobject-update* js . updates) - "Return a json object like JS, but with all UPDATES applied. Each updat= e is -a list (KEY PROC [DEFAULT]), so that KEY is mapped to the result of PROC -applied to the value to which KEY is mapped in JS. If no such mapping exi= sts, -PROC is instead applied to DEFAULT, or to '#f' is no DEFAULT is specified. -The update takes place from left to right, so later UPDATERs will receive = the -values returned by earlier UPDATERs for the same KEY." - (match js - (('@ . alist) - (let loop ((alist alist) - (updates updates)) - (match updates - (() (cons '@ alist)) - (((key proc) . updates) - (loop (alist-update alist key proc #f equal?) updates)) - (((key proc default) . updates) - (loop (alist-update alist key proc default equal?) updates))))))= ) - -(define (jsobject-union combine seed . objects) - "Merge OBJECTS into SEED by applying (COMBINE KEY VAL0 VAL), where VAL0 -is the value found in the (possibly updated) SEED and VAL is the new value -found in one of the OBJECTS." - (match seed - (('@ . aseed) - (match objects - (() seed) - ((('@ . alists) ...) - (cons - '@ - (fold (lambda (alist aseed) - (if (null? aseed) alist - (fold - (match-lambda* - (((k . v) aseed) - (let ((pair tail (alist-pop alist k))) - (match pair - (#f (acons k v aseed)) - ((_ . v0) (acons k (combine k v0 v) aseed))))= )) - aseed - alist))) - aseed - alists))))))) + (if (pair? pair) + (acons key (proc (cdr pair)) rest) + alist))) -;; Possibly useful helper functions: -;; (define (newest key val0 val) val) -;; (define (unkeyed->keyed proc) (lambda (_key val0 val) (proc val0 val))) - - ;;; ;;; Phases. ;;; @@ -142,8 +90,8 @@ (define (set-home . _) (define (module-name module) (let* ((package.json (string-append module "/package.json")) - (package-meta (call-with-input-file package.json read-json))) - (jsobject-ref package-meta "name"))) + (package-meta (call-with-input-file package.json json->scm))) + (assoc-ref package-meta "name"))) (define (index-modules input-paths) (define (list-modules directory) @@ -167,49 +115,59 @@ (define* (patch-dependencies #:key inputs #:allow-other-keys) (define index (index-modules (map cdr inputs))) - (define resolve-dependencies - (match-lambda - (('@ . alist) - (cons '@ (map (match-lambda - ((key . value) - (cons key (hash-ref index key value)))) - alist))))) + (define (resolve-dependencies dependencies) + (map + (match-lambda + ((dependency . version) + (cons dependency (hash-ref index dependency version)))) + dependencies)) - (with-atomic-json-file-replacement "package.json" + (with-atomic-json-file-replacement (lambda (pkg-meta) - (jsobject-update* - pkg-meta - `("devDependencies" ,resolve-dependencies (@)) - `("dependencies" ,(lambda (deps) - (resolve-dependencies - (jsobject-union - (lambda (k a b) b) - (jsobject-ref pkg-meta "peerDependencies" '(@= )) - deps))) - (@))))) + (fold + (lambda (proc pkg-meta) (proc pkg-meta)) + pkg-meta + (list + (lambda (pkg-meta) + (alist-update pkg-meta "devDependencies" resolve-dependencies)= ) + (lambda (pkg-meta) + (assoc-set! + pkg-meta + "dependencies" + (resolve-dependencies + ; Combined "peerDependencies" and "dependencies" dependenc= ies + ; with "dependencies" taking precedent. + (fold + (lambda (dependency dependencies) + (assoc-set! dependencies (car dependency) (cdr dependency))) + (assoc-ref* pkg-meta "peerDependencies" '()) + (assoc-ref* pkg-meta "dependencies" '()))))))))) #t) -(define (delete-dependencies absent) +(define (delete-dependencies dependencies-to-remove) "Rewrite 'package.json' to allow the build to proceed without packages -listed in ABSENT, a list of strings naming npm packages. +listed in 'dependencies-to-remove', a list of strings naming npm packages. To prevent the deleted dependencies from being reintroduced, use this func= tion only after the 'patch-dependencies' phase." - (define delete-from-jsobject - (match-lambda - (('@ . alist) - (cons '@ (filter (match-lambda - ((k . _) - (not (member k absent)))) - alist))))) - - (with-atomic-json-file-replacement "package.json" + (with-atomic-json-file-replacement (lambda (pkg-meta) - (jsobject-update* - pkg-meta - `("devDependencies" ,delete-from-jsobject (@)) - `("dependencies" ,delete-from-jsobject (@)) - `("peerDependencies" ,delete-from-jsobject (@)))))) + (fold + (lambda (dependency-key pkg-meta) + (alist-update + pkg-meta + dependency-key + (lambda (dependencies) + (remove + (lambda (dependency) + (member (car dependency) dependencies-to-remove)) + dependencies)))) + pkg-meta + (list + "devDependencies" + "dependencies" + "peerDependencies" + "optionalDependencies"))))) (define* (delete-lockfiles #:key inputs #:allow-other-keys) "Delete 'package-lock.json', 'yarn.lock', and 'npm-shrinkwrap.json', if = they @@ -228,8 +186,8 @@ (define* (configure #:key outputs inputs #:allow-other-= keys) #t)) (define* (build #:key inputs #:allow-other-keys) - (let ((package-meta (call-with-input-file "package.json" read-json))) - (if (jsobject-ref (jsobject-ref package-meta "scripts" '(@)) "build" #= f) + (let ((package-meta (call-with-input-file "package.json" json->scm))) + (if (assoc-ref* (assoc-ref* package-meta "scripts" '()) "build" #f) (let ((npm (string-append (assoc-ref inputs "node") "/bin/npm"))) (invoke npm "run" "build")) (format #t "there is no build script to run~%")) @@ -301,22 +259,20 @@ (define* (avoid-node-gyp-rebuild #:key outputs #:allow-other-keys) ;; even need to overwrite this file. Therefore, let's use some helpers ;; that we'd otherwise not need. (define pkg-meta - (call-with-input-file installed-package.json read-json)) + (call-with-input-file installed-package.json json->scm)) (define scripts - (jsobject-ref pkg-meta "scripts" '(@))) - (define (jsobject-set js key val) - (jsobject-update* js (list key (const val)))) + (assoc-ref* pkg-meta "scripts" '())) - (when (equal? "node-gyp rebuild" (jsobject-ref scripts "install" #f)) + (when (equal? "node-gyp rebuild" (assoc-ref* scripts "install" #f)) (call-with-output-file installed-package.json (lambda (out) - (write-json - (jsobject-set pkg-meta - "scripts" - (jsobject-set scripts - "install" - "echo Guix: avoiding node-gyp rebuild= ")) - out))))) + (scm->json + (assoc-set! pkg-meta + "scripts" + (assoc-set! scripts + "install" + "echo Guix: avoiding node-gyp rebuild")) + out))))) (define %standard-phases (modify-phases gnu:%standard-phases base-commit: e16cdcf37d8223b3634ec5e658356c3b7f154859 --=20 2.46.0 --00000000000009b154062a6fc654 Content-Type: text/x-patch; charset="UTF-8"; name="0001-Replace-guix-build-json-with-json-in-node-build-system.patch" Content-Disposition: attachment; filename="0001-Replace-guix-build-json-with-json-in-node-build-system.patch" Content-Transfer-Encoding: base64 Content-ID: <f_m5a5h8fy0> X-Attachment-Id: f_m5a5h8fy0 RnJvbSBlNGVhN2I4OGNlMzliMWY1YjI0ODE4MTc0ZjJlNWMxNzQyNGYzYWRjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpNZXNzYWdlLUlEOiA8ZTRlYTdiODhjZTM5YjFmNWIyNDgxODE3NGYyZTVj MTc0MjRmM2FkYy4xNzM1NDk4MTgzLmdpdC5kLmtob2RhYmFraHNoQGdtYWlsLmNvbT4KRnJvbTog RGFuaWVsIEtob2RhYmFraHNoIDxkLmtob2RhYmFraHNoQGdtYWlsLmNvbT4KRGF0ZTogVGh1LCAy NiBEZWMgMjAyNCAwNDozNTozOSAtMDgwMApTdWJqZWN0OiBbUEFUQ0ggMS8yXSBSZXBsYWNlIChn dWl4IGJ1aWxkIGpzb24pIHdpdGggKGpzb24pIGluIAogbm9kZS1idWlsZC1zeXN0ZW0KClRoaXMg Y2hhbmdlIHJlcGxhY2VzIHRoZSB1c2Ugb2YgKGd1aXggYnVpbGQganNvbikgd2l0aCAoanNvbikg Zm9yIHRoZSBub2RlIGVjb3N5c3RlbS4KU2luY2UgZ3VpbGUtanNvbiBpcyBhIGRlcGVuZGVuY3kg b2YgR3VpeCwgYW5kIGl0J3MgdXNlZCBlbHNld2hlcmUgaW4gdGhlIHByb2plY3QsIGl0IG1ha2Vz IHNlbnNlIHRvIHVzZSB0aGlzIGluc3RlYWQgb2Ygcm9sbGluZyBvdXIgb3duIEpTT04gaW1wbGVt ZW50YXRpb24gd2l0aCAoZ3VpeCBidWlsZCBqc29uKS4KCihndWl4IGJ1aWxkIGpzb24pIGFsc28g aGFzIGEgZmV3IGlzc3VlczoKIC0gd3JpdGUtanNvbiBlc2NhcGVzIGZvcndhcmQgc2xhc2hlcyBp biBzdHJpbmdzIGZvciBzb21lIHJlYXNvbiAoIi8iIGJlY29tZSAiXC8iKQogLSByZWFkLWpzb24g cHJvZHVjZXMgYSBzdHJ1Y3R1cmUgc2ltaWxhciB0byBhbiBhc3NvY2lhdGlvbiBsaXN0IGJ1dCB3 aXRoICdAJyB0byBpbmRpY2F0ZSBhbiBvYmplY3QsIG1ha2luZyBpdCBub3QgcG9zc2libGUgdG8g dXNlIGFzc29jaWF0aW9uIGxpc3QgcHJvY2VkdXJlcyBkaXJlY3RseS4KClRoaXMgaXMgb25lIHN0 ZXAgdG8gbW92ZSBhd2F5IGZyb20gKGd1aXggYnVpbGQganNvbiksIHRoZXJlIHdpbGwgYmUgb3Ro ZXIgY2hhbmdlcyB0byByZW1vdmUgdGhlIG90aGVyIHVzZXMgb2YgaXQuCgpTaWduZWQtb2ZmLWJ5 OiBEYW5pZWwgS2hvZGFiYWtoc2ggPGQua2hvZGFiYWtoc2hAZ21haWwuY29tPgpDaGFuZ2UtSWQ6 IEk5ZmQ1MTUyYTk4YjZhMjQxZDQxNGU5YTk0YWIxNzljOWNhYmNmYjg1Ci0tLQogZ251L3BhY2th Z2VzL25vZGUteHl6LnNjbSAgICAgICAgfCAxNDggKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQog Z3VpeC9idWlsZC1zeXN0ZW0vbm9kZS5zY20gICAgICAgfCAgIDYgKy0KIGd1aXgvYnVpbGQvbm9k ZS1idWlsZC1zeXN0ZW0uc2NtIHwgMTgwICsrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0K IDMgZmlsZXMgY2hhbmdlZCwgMTM5IGluc2VydGlvbnMoKyksIDE5NSBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9nbnUvcGFja2FnZXMvbm9kZS14eXouc2NtIGIvZ251L3BhY2thZ2VzL25vZGUt eHl6LnNjbQppbmRleCBlOThlZGEyYTAxLi5lYzNmOWZiZmIxIDEwMDY0NAotLS0gYS9nbnUvcGFj a2FnZXMvbm9kZS14eXouc2NtCisrKyBiL2dudS9wYWNrYWdlcy9ub2RlLXh5ei5zY20KQEAgLTcs NiArNyw3IEBACiA7OzsgQ29weXJpZ2h0IMKpIDIwMjEgRGhydXZpbiBHYW5kaGkgPGNvbnRhY3RA ZGhydXZpbi5kZXY+CiA7OzsgQ29weXJpZ2h0IMKpIDIwMjIgTmljb2xhcyBHcmF2ZXMgPG5ncmF2 ZXNAbmdyYXZlcy5mcj4KIDs7OyBDb3B5cmlnaHQgwqkgMjAyMyBKZWxsZSBMaWNodCA8amxpY2h0 QGZzZmUub3JnPgorOzs7IENvcHlyaWdodCDCqSAyMDI0IERhbmllbCBLaG9kYWJha2hzaCA8ZC5r aG9kYWJha2hzaEBnbWFpbC5jb20+CiA7OzsKIDs7OyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUg R3VpeC4KIDs7OwpAQCAtMjQsMTQgKzI1LDE0IEBACiA7OzsgYWxvbmcgd2l0aCBHTlUgR3VpeC4g IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIAogKGRlZmluZS1t b2R1bGUgKGdudSBwYWNrYWdlcyBub2RlLXh5eikKLSAgIzp1c2UtbW9kdWxlICgoZ3VpeCBsaWNl bnNlcykgIzpwcmVmaXggbGljZW5zZTopCiAgICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIHNx bGl0ZSkKICAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgcHl0aG9uKQogICAjOnVzZS1tb2R1 bGUgKGdudSBwYWNrYWdlcyB3ZWIpCisgICM6dXNlLW1vZHVsZSAoZ3VpeCBidWlsZC1zeXN0ZW0g bm9kZSkKICAgIzp1c2UtbW9kdWxlIChndWl4IGdleHApCi0gICM6dXNlLW1vZHVsZSAoZ3VpeCBw YWNrYWdlcykKICAgIzp1c2UtbW9kdWxlIChndWl4IGdpdC1kb3dubG9hZCkKLSAgIzp1c2UtbW9k dWxlIChndWl4IGJ1aWxkLXN5c3RlbSBub2RlKSkKKyAgIzp1c2UtbW9kdWxlICgoZ3VpeCBsaWNl bnNlcykgIzpwcmVmaXggbGljZW5zZTopCisgICM6dXNlLW1vZHVsZSAoZ3VpeCBwYWNrYWdlcykp CiAKIDs7OwogOzs7IFBsZWFzZTogVHJ5IHRvIGFkZCBuZXcgbW9kdWxlIHBhY2thZ2VzIGluIGFs cGhhYmV0aWMgb3JkZXIuCkBAIC02OSwxOSArNzAsMTcgQEAgKGRlZmluZS1wdWJsaWMgbm9kZS1h Y29ybgogICAgICAgICAgICAgIDs7IGl0IHdvdWxkIHRyeSB0byB1c2UgdGhlIGJ1aWxkIGVudmly b25tZW50IGFuZCB3b3VsZCBibG9jayB0aGUKICAgICAgICAgICAgICA7OyBhdXRvbWF0aWMgYnVp bGRpbmcgYnkgb3RoZXIgcGFja2FnZXMgbWFraW5nIHVzZSBvZiBub2RlLWFjb3JuLgogICAgICAg ICAgICAgIDs7IFRPRE86IEFkZCB1dGlsaXR5IGZ1bmN0aW9uCi0gICAgICAgICAgICAgKHdpdGgt YXRvbWljLWpzb24tZmlsZS1yZXBsYWNlbWVudCAicGFja2FnZS5qc29uIgotICAgICAgICAgICAg ICAgKG1hdGNoLWxhbWJkYQotICAgICAgICAgICAgICAgICAoKCdAIC4gcGtnLW1ldGEtYWxpc3Qp Ci0gICAgICAgICAgICAgICAgICAoY29ucyAnQCAobWFwIChtYXRjaC1sYW1iZGEKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoKCJzY3JpcHRzIiBAIC4gc2NyaXB0cy1hbGlzdCkK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCgic2NyaXB0cyIgQCAsQChmaWx0 ZXIgKG1hdGNoLWxhbWJkYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICgoInByZXBhcmUiIC4gXykKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2YpCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF8K LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgI3QpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzY3JpcHRzLWFsaXN0KSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKG90aGVyIG90aGVyKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cGtnLW1ldGEtYWxpc3QpKSkpKSkpCisgICAgICAgICAgICAgKHdpdGgtYXRvbWljLWpzb24tZmls ZS1yZXBsYWNlbWVudCAobGFtYmRhIChwa2ctbWV0YS1hbGlzdCkKKyAgICAgICAgICAgICAgICht YXAKKyAgICAgICAgICAgICAgICAgKG1hdGNoLWxhbWJkYQorICAgICAgICAgICAgICAgICAgICgo InNjcmlwdHMiIC4gc2NyaXB0cy1hbGlzdCkKKyAgICAgICAgICAgICAgICAgICAgIChjb25zICJz Y3JpcHRzIiAoZmlsdGVyCisgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaC1sYW1iZGEKKyAg ICAgICAgICAgICAgICAgICAgICAgICAoKCJwcmVwYXJlIiAuIF8pICNmKQorICAgICAgICAgICAg ICAgICAgICAgICAgIChfICN0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0cy1hbGlz dCkpKQorICAgICAgICAgICAgICAgICAgIChvdGhlciBvdGhlcikpCisgICAgICAgICAgICAgICAg IHBrZy1tZXRhLWFsaXN0KSkpKSkKICAgICAgICAgIChyZXBsYWNlICdidWlsZAogICAgICAgICAg ICAobGFtYmRhKiAoIzprZXkgaW5wdXRzIG5hdGl2ZS1pbnB1dHMgIzphbGxvdy1vdGhlci1rZXlz KQogICAgICAgICAgICAgIChsZXQgKChlc2J1aWxkIChzZWFyY2gtaW5wdXQtZmlsZSAob3IgbmF0 aXZlLWlucHV0cyBpbnB1dHMpCkBAIC0xNTgsMjMgKzE1NywxNyBAQCAoZGVmaW5lLXB1YmxpYyBu b2RlLWFkZG9uLWFwaQogICAgICAgICAgICAobGFtYmRhIGFyZ3MKICAgICAgICAgICAgICAoZGVm aW5lIG5ldy10ZXN0LXNjcmlwdAogICAgICAgICAgICAgICAgImVjaG8gc3RvcHBpbmcgYWZ0ZXIg cHJldGVzdCBvbiBHdWl4IikKLSAgICAgICAgICAgICAod2l0aC1hdG9taWMtanNvbi1maWxlLXJl cGxhY2VtZW50ICJwYWNrYWdlLmpzb24iCi0gICAgICAgICAgICAgICAobWF0Y2gtbGFtYmRhCi0g ICAgICAgICAgICAgICAgICgoJ0AgLiBwa2ctbWV0YS1hbGlzdCkKLSAgICAgICAgICAgICAgICAg IChjb25zCi0gICAgICAgICAgICAgICAgICAgJ0AKLSAgICAgICAgICAgICAgICAgICAobWFwICht YXRjaC1sYW1iZGEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKCgic2NyaXB0cyIgJ0AgLiBz Y3JpcHRzLWFsaXN0KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgYCgic2NyaXB0cyIgQCAs QChtYXAgKG1hdGNoLWxhbWJkYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoKCJ0ZXN0IiAuIF8pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoY29ucyAidGVzdCIKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldy10ZXN0LXNjcmlwdCkpCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvdGhlcgot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIp KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0 cy1hbGlzdCkpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAob3RoZXIKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgIG90aGVyKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHBrZy1tZXRh LWFsaXN0KSkpKSkpKSkpKQorICAgICAgICAgICAgICh3aXRoLWF0b21pYy1qc29uLWZpbGUtcmVw bGFjZW1lbnQgKGxhbWJkYSAocGtnLW1ldGEtYWxpc3QpCisgICAgICAgICAgICAgICAobWFwCisg ICAgICAgICAgICAgICAgIChtYXRjaC1sYW1iZGEKKyAgICAgICAgICAgICAgICAgICAoKCJzY3Jp cHRzIiAuIHNjcmlwdHMtYWxpc3QpCisgICAgICAgICAgICAgICAgICAgICAoY29ucyAic2NyaXB0 cyIgKG1hcAorICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2gtbGFtYmRhCisgICAgICAgICAg ICAgICAgICAgICAgICAgKCgidGVzdCIgLiBfKSAoY29ucyAidGVzdCIgbmV3LXRlc3Qtc2NyaXB0 KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAob3RoZXIgb3RoZXIpKQorICAgICAgICAgICAg ICAgICAgICAgICBzY3JpcHRzLWFsaXN0KSkpCisgICAgICAgICAgICAgICAgICAgKG90aGVyIG90 aGVyKSkKKyAgICAgICAgICAgICAgICAgcGtnLW1ldGEtYWxpc3QpKSkpKSkpKQogICAgIChob21l LXBhZ2UgImh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS1hZGRvbi1hcGkiKQogICAgIChz eW5vcHNpcyAiTm9kZS5qcyBBUEkgKE5vZGUtQVBJKSBoZWFkZXItb25seSBDKysgd3JhcHBlcnMi KQogICAgIChkZXNjcmlwdGlvbiAiVGhpcyBtb2R1bGUgY29udGFpbnMgaGVhZGVyLW9ubHkgQysr IHdyYXBwZXIgY2xhc3NlcyB3aGljaApAQCAtMTIyMywyMiArMTIxNiwxOSBAQCAoZGVmaW5lLXB1 YmxpYyBub2RlLXNlcmlhbHBvcnQtYmluZGluZ3MKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJub2RlLWFiaSIpKSkpCiAgICAgICAgICAoYWRkLWFmdGVyICdjaGRpciAnYXZv aWQtcHJlYnVpbGQtaW5zdGFsbAogICAgICAgICAgICAobGFtYmRhIGFyZ3MKLSAgICAgICAgICAg ICAod2l0aC1hdG9taWMtanNvbi1maWxlLXJlcGxhY2VtZW50ICJwYWNrYWdlLmpzb24iCi0gICAg ICAgICAgICAgICAobWF0Y2gtbGFtYmRhCi0gICAgICAgICAgICAgICAgICgoJ0AgLiBwa2ctbWV0 YS1hbGlzdCkKLSAgICAgICAgICAgICAgICAgIChjb25zICdAIChtYXAgKG1hdGNoLWxhbWJkYQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoInNjcmlwdHMiIEAgLiBzY3JpcHRz LWFsaXN0KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgKCJzY3JpcHRzIiBA ICxAKGZpbHRlciAobWF0Y2gtbGFtYmRhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgiaW5zdGFsbCIgLiBfKQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjZikK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoXwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAjdCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdHMtYWxpc3QpKSkKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoKCJneXBmaWxlIiAuIF8pCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICcoImd5cGZpbGUiIC4gI2YpKQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChvdGhlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhl cikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBrZy1tZXRhLWFsaXN0KSkpKSkp KSkKKyAgICAgICAgICAgICAod2l0aC1hdG9taWMtanNvbi1maWxlLXJlcGxhY2VtZW50IChsYW1i ZGEgKHBrZy1tZXRhLWFsaXN0KQorICAgICAgICAgICAgICAgKG1hcAorICAgICAgICAgICAgICAg ICAobWF0Y2gtbGFtYmRhCisgICAgICAgICAgICAgICAgICAgKCgic2NyaXB0cyIgLiBzY3JpcHRz LWFsaXN0KQorICAgICAgICAgICAgICAgICAgICAgKGNvbnMgInNjcmlwdHMiIChmaWx0ZXIKKyAg ICAgICAgICAgICAgICAgICAgICAgKG1hdGNoLWxhbWJkYQorICAgICAgICAgICAgICAgICAgICAg ICAgICgoImluc3RhbGwiIC4gXykgI2YpCisgICAgICAgICAgICAgICAgICAgICAgICAgKF8gI3Qp KQorICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRzLWFsaXN0KSkpCisgICAgICAgICAgICAg ICAgICAgKCgiZ3lwZmlsZSIgLiBfKQorICAgICAgICAgICAgICAgICAgICAgKGNvbnMgImd5cGZp bGUiICNmKSkKKyAgICAgICAgICAgICAgICAgICAob3RoZXIgb3RoZXIpKQorICAgICAgICAgICAg ICAgICBwa2ctbWV0YS1hbGlzdCkpKSkpKQogICAgICAgICM6dGVzdHM/ICNmKSkKICAgICAoc3lu b3BzaXMgIkFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIE5vZGUgU2VyaWFsUG9ydCBiaW5kaW5ncyIp CiAgICAgKGRlc2NyaXB0aW9uICJOb2RlIFNlcmlhbFBvcnQgaXMgYSBtb2R1bGFyIHN1aXRlIG9m IE5vZGUuanMgcGFja2FnZXMgZm9yCkBAIC0xNTI0LDM5ICsxNTE0LDMzIEBAIChkZWZpbmUtcHVi bGljIG5vZGUtc3FsaXRlMwogICAgICAgICAgICAgIChzdWJzdGl0dXRlKiAiLm5wbWlnbm9yZSIK ICAgICAgICAgICAgICAgICgoImxpYi9iaW5kaW5nIikKICAgICAgICAgICAgICAgICAiI2xpYi9i aW5kaW5nICMgPC0gcGF0Y2hlZCBmb3IgR3VpeCIpKQotICAgICAgICAgICAgICh3aXRoLWF0b21p Yy1qc29uLWZpbGUtcmVwbGFjZW1lbnQgInBhY2thZ2UuanNvbiIKLSAgICAgICAgICAgICAgICht YXRjaC1sYW1iZGEKLSAgICAgICAgICAgICAgICAgKCgnQCAuIHBrZy1tZXRhLWFsaXN0KQotICAg ICAgICAgICAgICAgICAgKG1hdGNoIChhc3NvYy1yZWYgcGtnLW1ldGEtYWxpc3QgImJpbmFyeSIp Ci0gICAgICAgICAgICAgICAgICAgICgoJ0AgLiBiaW5hcnktYWxpc3QpCi0gICAgICAgICAgICAg ICAgICAgICA7OyBXaGVuIGl0IGJ1aWxkcyBmcm9tIHNvdXJjZSwgbm9kZS1wcmUtZ3lwIHN1cHBs aWVzCi0gICAgICAgICAgICAgICAgICAgICA7OyBtb2R1bGVfbmFtZSBhbmQgbW9kdWxlX3BhdGgg YmFzZWQgb24gdGhlIGVudHJpZXMgdW5kZXIKLSAgICAgICAgICAgICAgICAgICAgIDs7ICJiaW5h cnkiIGZyb20gInBhY2thZ2UuanNvbiIsIHNvIHRoaXMgcGFja2FnZSdzCi0gICAgICAgICAgICAg ICAgICAgICA7OyAiYmluZGluZy5neXAiIGRvZXNuJ3QgZGVmaW5lIHRoZW0uIFRodXMsIHdlIGFs c28gbmVlZAotICAgICAgICAgICAgICAgICAgICAgOzsgdG8gc3VwcGx5IHRoZW0uIFRoZSBHWVBf REVGSU5FUyBlbnZpcm9ubWVudCB2YXJpYWJsZQotICAgICAgICAgICAgICAgICAgICAgOzsgdHVy bnMgb3V0IHRvIGJlIHRoZSBlYXNpZXN0IHdheSB0byBtYWtlIHN1cmUgdGhleSBhcmUKLSAgICAg ICAgICAgICAgICAgICAgIDs7IHByb3BhZ2F0ZWQgZnJvbSBucG0gdG8gbm9kZS1neXAgdG8gZ3lw LgotICAgICAgICAgICAgICAgICAgICAgKHNldGVudiAiR1lQX0RFRklORVMiCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChzdHJpbmctYXBwZW5kCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAibW9kdWxlX25hbWU9IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFz c29jLXJlZiBiaW5hcnktYWxpc3QgIm1vZHVsZV9uYW1lIikKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICIgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZHVsZV9wYXRo PSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhc3NvYy1yZWYgYmluYXJ5LWFsaXN0 ICJtb2R1bGVfcGF0aCIpKSkpKQotICAgICAgICAgICAgICAgICAgOzsgV2UgbmVlZCB0byByZW1v dmUgdGhlIGluc3RhbGwgc2NyaXB0IGZyb20gInBhY2thZ2UuanNvbiIsCi0gICAgICAgICAgICAg ICAgICA7OyBhcyBpdCB3b3VsZCB0cnkgdG8gdXNlIG5vZGUtcHJlLWd5cCBhbmQgd291bGQgYmxv Y2sgdGhlCi0gICAgICAgICAgICAgICAgICA7OyBhdXRvbWF0aWMgYnVpbGRpbmcgcGVyZm9ybWVk IGJ5IGBucG0gaW5zdGFsbGAuCi0gICAgICAgICAgICAgICAgICAoY29ucyAnQCAobWFwIChtYXRj aC1sYW1iZGEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCJzY3JpcHRzIiBA IC4gc2NyaXB0cy1hbGlzdCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCgi c2NyaXB0cyIgQCAsQChmaWx0ZXIgKG1hdGNoLWxhbWJkYQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoImluc3RhbGwiIC4gXykK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgI2YpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKF8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgI3QpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRzLWFsaXN0KSkpCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKG90aGVyCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG90aGVyKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGtn LW1ldGEtYWxpc3QpKSkpKSkpKSkpCisgICAgICAgICAgICAgKHdpdGgtYXRvbWljLWpzb24tZmls ZS1yZXBsYWNlbWVudCAobGFtYmRhIChwa2ctbWV0YS1hbGlzdCkKKyAgICAgICAgICAgICAgIChs ZXQgKChiaW5hcnktYWxpc3QgKGFzc29jLXJlZiBwa2ctbWV0YS1hbGlzdCAiYmluYXJ5IikpKQor ICAgICAgICAgICAgICAgICA7OyBXaGVuIGl0IGJ1aWxkcyBmcm9tIHNvdXJjZSwgbm9kZS1wcmUt Z3lwIHN1cHBsaWVzCisgICAgICAgICAgICAgICAgIDs7IG1vZHVsZV9uYW1lIGFuZCBtb2R1bGVf cGF0aCBiYXNlZCBvbiB0aGUgZW50cmllcyB1bmRlcgorICAgICAgICAgICAgICAgICA7OyAiYmlu YXJ5IiBmcm9tICJwYWNrYWdlLmpzb24iLCBzbyB0aGlzIHBhY2thZ2UncworICAgICAgICAgICAg ICAgICA7OyAiYmluZGluZy5neXAiIGRvZXNuJ3QgZGVmaW5lIHRoZW0uIFRodXMsIHdlIGFsc28g bmVlZAorICAgICAgICAgICAgICAgICA7OyB0byBzdXBwbHkgdGhlbS4gVGhlIEdZUF9ERUZJTkVT IGVudmlyb25tZW50IHZhcmlhYmxlCisgICAgICAgICAgICAgICAgIDs7IHR1cm5zIG91dCB0byBi ZSB0aGUgZWFzaWVzdCB3YXkgdG8gbWFrZSBzdXJlIHRoZXkgYXJlCisgICAgICAgICAgICAgICAg IDs7IHByb3BhZ2F0ZWQgZnJvbSBucG0gdG8gbm9kZS1neXAgdG8gZ3lwLgorICAgICAgICAgICAg ICAgICAoc2V0ZW52ICJHWVBfREVGSU5FUyIgKHN0cmluZy1hcHBlbmQKKyAgICAgICAgICAgICAg ICAgICAibW9kdWxlX25hbWU9IgorICAgICAgICAgICAgICAgICAgIChhc3NvYy1yZWYgYmluYXJ5 LWFsaXN0ICJtb2R1bGVfbmFtZSIpCisgICAgICAgICAgICAgICAgICAgIiBtb2R1bGVfcGF0aD0i CisgICAgICAgICAgICAgICAgICAgKGFzc29jLXJlZiBiaW5hcnktYWxpc3QgIm1vZHVsZV9wYXRo IikpKSkKKyAgICAgICAgICAgICAgIDs7IFdlIG5lZWQgdG8gcmVtb3ZlIHRoZSBpbnN0YWxsIHNj cmlwdCBmcm9tICJwYWNrYWdlLmpzb24iLAorICAgICAgICAgICAgICAgOzsgYXMgaXQgd291bGQg dHJ5IHRvIHVzZSBub2RlLXByZS1neXAgYW5kIHdvdWxkIGJsb2NrIHRoZQorICAgICAgICAgICAg ICAgOzsgYXV0b21hdGljIGJ1aWxkaW5nIHBlcmZvcm1lZCBieSBgbnBtIGluc3RhbGxgLgorICAg ICAgICAgICAgICAgKG1hcAorICAgICAgICAgICAgICAgICAobWF0Y2gtbGFtYmRhCisgICAgICAg ICAgICAgICAgICAgKCgic2NyaXB0cyIgLiBzY3JpcHRzLWFsaXN0KQorICAgICAgICAgICAgICAg ICAgICAgKGNvbnMgInNjcmlwdHMiIChmaWx0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgKG1h dGNoLWxhbWJkYQorICAgICAgICAgICAgICAgICAgICAgICAgICgoImluc3RhbGwiIC4gXykgI2Yp CisgICAgICAgICAgICAgICAgICAgICAgICAgKF8gI3QpKQorICAgICAgICAgICAgICAgICAgICAg ICBzY3JpcHRzLWFsaXN0KSkpCisgICAgICAgICAgICAgICAgICAgKG90aGVyIG90aGVyKSkKKyAg ICAgICAgICAgICAgICAgcGtnLW1ldGEtYWxpc3QpKSkpKSkpKQogICAgIChob21lLXBhZ2UgImh0 dHBzOi8vZ2l0aHViLmNvbS9tYXBib3gvbm9kZS1zcWxpdGUzIikKICAgICAoc3lub3BzaXMgIk5v ZGUuanMgYmluZGluZ3MgZm9yIFNRTGl0ZTMiKQogICAgIChkZXNjcmlwdGlvbgpkaWZmIC0tZ2l0 IGEvZ3VpeC9idWlsZC1zeXN0ZW0vbm9kZS5zY20gYi9ndWl4L2J1aWxkLXN5c3RlbS9ub2RlLnNj bQppbmRleCA1N2ZlNWY2MDMwLi40MjViOGNkOWIzIDEwMDY0NAotLS0gYS9ndWl4L2J1aWxkLXN5 c3RlbS9ub2RlLnNjbQorKysgYi9ndWl4L2J1aWxkLXN5c3RlbS9ub2RlLnNjbQpAQCAtNCw2ICs0 LDcgQEAKIDs7OyBDb3B5cmlnaHQgwqkgMjAyMSBMdWRvdmljIENvdXJ0w6hzIDxsdWRvQGdudS5v cmc+CiA7OzsgQ29weXJpZ2h0IMKpIDIwMjEgUGllcnJlIExhbmdsb2lzIDxwaWVycmUubGFuZ2xv aXNAZ214LmNvbT4KIDs7OyBDb3B5cmlnaHQgwqkgMjAyMSBQaGlsaXAgTWNHcmF0aCA8cGhpbGlw QHBoaWxpcG1jZ3JhdGguY29tPgorOzs7IENvcHlyaWdodCDCqSAyMDI0IERhbmllbCBLaG9kYWJh a2hzaCA8ZC5raG9kYWJha2hzaEBnbWFpbC5jb20+CiA7OzsKIDs7OyBUaGlzIGZpbGUgaXMgcGFy dCBvZiBHTlUgR3VpeC4KIDs7OwpAQCAtMzYsNyArMzcsMTAgQEAgKGRlZmluZS1tb2R1bGUgKGd1 aXggYnVpbGQtc3lzdGVtIG5vZGUpCiAoZGVmaW5lICVub2RlLWJ1aWxkLXN5c3RlbS1tb2R1bGVz CiAgIDs7IEJ1aWxkLXNpZGUgbW9kdWxlcyBpbXBvcnRlZCBieSBkZWZhdWx0LgogICBgKChndWl4 IGJ1aWxkIG5vZGUtYnVpbGQtc3lzdGVtKQotICAgIChndWl4IGJ1aWxkIGpzb24pCisgICAgKGpz b24pCisgICAgKGpzb24gYnVpbGRlcikKKyAgICAoanNvbiBwYXJzZXIpCisgICAgKGpzb24gcmVj b3JkKQogICAgICxAJWRlZmF1bHQtZ251LWltcG9ydGVkLW1vZHVsZXMpKQogCiAoZGVmaW5lIChk ZWZhdWx0LW5vZGUpCmRpZmYgLS1naXQgYS9ndWl4L2J1aWxkL25vZGUtYnVpbGQtc3lzdGVtLnNj bSBiL2d1aXgvYnVpbGQvbm9kZS1idWlsZC1zeXN0ZW0uc2NtCmluZGV4IGZiMjM4OTRiYzEuLmRm N2VhNzc3NGMgMTAwNjQ0Ci0tLSBhL2d1aXgvYnVpbGQvbm9kZS1idWlsZC1zeXN0ZW0uc2NtCisr KyBiL2d1aXgvYnVpbGQvbm9kZS1idWlsZC1zeXN0ZW0uc2NtCkBAIC00LDYgKzQsNyBAQAogOzs7 IENvcHlyaWdodCDCqSAyMDE5LCAyMDIxIFRpbW90aHkgU2FtcGxlIDxzYW1wbGV0QG5neXJvLmNv bT4KIDs7OyBDb3B5cmlnaHQgwqkgMjAyMSwgMjAyMiBQaGlsaXAgTWNHcmF0aCA8cGhpbGlwQHBo aWxpcG1jZ3JhdGguY29tPgogOzs7IENvcHlyaWdodCDCqSAyMDIyIExpbGlhbmEgTWFyaWUgUHJp a2xlciA8bGlsaWFuYS5wcmlrbGVyQGdtYWlsLmNvbT4KKzs7OyBDb3B5cmlnaHQgwqkgMjAyNCBE YW5pZWwgS2hvZGFiYWtoc2ggPGQua2hvZGFiYWtoc2hAZ21haWwuY29tPgogOzs7CiA7OzsgVGhp cyBmaWxlIGlzIHBhcnQgb2YgR05VIEd1aXguCiA7OzsKQEAgLTIzLDEwICsyNCwxMCBAQAogKGRl ZmluZS1tb2R1bGUgKGd1aXggYnVpbGQgbm9kZS1idWlsZC1zeXN0ZW0pCiAgICM6dXNlLW1vZHVs ZSAoKGd1aXggYnVpbGQgZ251LWJ1aWxkLXN5c3RlbSkgIzpwcmVmaXggZ251OikKICAgIzp1c2Ut bW9kdWxlIChndWl4IGJ1aWxkIHV0aWxzKQotICAjOnVzZS1tb2R1bGUgKGd1aXggYnVpbGQganNv bikKICAgIzp1c2UtbW9kdWxlIChpY2UtOSBmdHcpCiAgICM6dXNlLW1vZHVsZSAoaWNlLTkgcmVn ZXgpCiAgICM6dXNlLW1vZHVsZSAoaWNlLTkgbWF0Y2gpCisgICM6dXNlLW1vZHVsZSAoanNvbikK ICAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktMSkKICAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmkt NzEpCiAgICM6ZXhwb3J0ICglc3RhbmRhcmQtcGhhc2VzCkBAIC0zNCwxMyArMzUsMTQgQEAgKGRl ZmluZS1tb2R1bGUgKGd1aXggYnVpbGQgbm9kZS1idWlsZC1zeXN0ZW0pCiAgICAgICAgICAgICBk ZWxldGUtZGVwZW5kZW5jaWVzCiAgICAgICAgICAgICBub2RlLWJ1aWxkKSkKIAotKGRlZmluZSAo d2l0aC1hdG9taWMtanNvbi1maWxlLXJlcGxhY2VtZW50IGZpbGUgcHJvYykKKyhkZWZpbmUqICh3 aXRoLWF0b21pYy1qc29uLWZpbGUtcmVwbGFjZW1lbnQgcHJvYworICAjOm9wdGlvbmFsIChmaWxl ICJwYWNrYWdlLmpzb24iKSkKICAgIkxpa2UgJ3dpdGgtYXRvbWljLWZpbGUtcmVwbGFjZW1lbnQn LCBidXQgUFJPQyBpcyBjYWxsZWQgd2l0aCBhIHNpbmdsZQogYXJndW1lbnQtLS10aGUgcmVzdWx0 IG9mIHBhcnNpbmcgRklMRSdzIGNvbnRlbnRzIGFzIGpzb24tLS1hbmQgc2hvdWxkIGEgdmFsdWUK IHRvIGJlIHdyaXR0ZW4gYXMganNvbiB0byB0aGUgcmVwbGFjZW1lbnQgRklMRS4iCiAgICh3aXRo LWF0b21pYy1maWxlLXJlcGxhY2VtZW50IGZpbGUKICAgICAobGFtYmRhIChpbiBvdXQpCi0gICAg ICAod3JpdGUtanNvbiAocHJvYyAocmVhZC1qc29uIGluKSkgb3V0KSkpKQorICAgICAgKHNjbS0+ anNvbiAocHJvYyAoanNvbi0+c2NtIGluKSkgb3V0KSkpKQogCiAoZGVmaW5lKiAoYXNzb2MtcmVm KiBhbGlzdCBrZXkgIzpvcHRpb25hbCBkZWZhdWx0KQogICAiTGlrZSBhc3NvYy1yZWYsIGJ1dCBy ZXR1cm4gREVGQVVMVCBpbnN0ZWFkIG9mICNmIGlmIG5vIHZhbHVlIGV4aXN0cy4iCkBAIC00OCwx MCArNTAsNiBAQCAoZGVmaW5lKiAoYXNzb2MtcmVmKiBhbGlzdCBrZXkgIzpvcHRpb25hbCBkZWZh dWx0KQogICAgICgjZiBkZWZhdWx0KQogICAgICgoXyAuIHZhbHVlKSB2YWx1ZSkpKQogCi0oZGVm aW5lKiAoanNvYmplY3QtcmVmIG9iaiBrZXkgIzpvcHRpb25hbCBkZWZhdWx0KQotICAobWF0Y2gg b2JqCi0gICAgKCgnQCAuIGFsaXN0KSAoYXNzb2MtcmVmKiBhbGlzdCBrZXkgZGVmYXVsdCkpKSkK LQogKGRlZmluZSogKGFsaXN0LXBvcCBhbGlzdCBrZXkgIzpvcHRpb25hbCAoPSBlcXVhbD8pKQog ICAiUmV0dXJuIHR3byB2YWx1ZXMsIHRoZSBmaXJzdCBwYWlyIGluIEFMSVNUIHdpdGgga2V5IEtF WSwgYW5kIHRoZSBvdGhlcgogZWxlbWVudHMuICBFcXVhbGl0eSBjYWxscyBhcmUgbWFkZSBhcyAo PSBLRVkgQUxJU1RDQVIpLiIKQEAgLTYzLDY3ICs2MSwxNyBAQCAoZGVmaW5lKiAoYWxpc3QtcG9w IGFsaXN0IGtleSAjOm9wdGlvbmFsICg9IGVxdWFsPykpCiAgICAgICAgICh2YWx1ZXMgKGNhciBh ZnRlcikgKGFwcGVuZCBiZWZvcmUgKGNkciBhZnRlcikpKQogICAgICAgICAodmFsdWVzICNmIGJl Zm9yZSkpKSkKIAotKGRlZmluZSogKGFsaXN0LXVwZGF0ZSBhbGlzdCBrZXkgcHJvYyAjOm9wdGlv bmFsIGRlZmF1bHQgKD0gZXF1YWw/KSkKKyhkZWZpbmUqIChhbGlzdC11cGRhdGUgYWxpc3Qga2V5 IHByb2MgIzpvcHRpb25hbCAoPSBlcXVhbD8pKQogICAiUmV0dXJuIGFuIGFzc29jaWF0aW9uIGxp c3QgbGlrZSBBTElTVCwgYnV0IHdpdGggS0VZIG1hcHBlZCB0byB0aGUgcmVzdWx0IG9mCiBQUk9D IGFwcGxpZWQgdG8gdGhlIGZpcnN0IHZhbHVlIGZvdW5kIHVuZGVyIHRoZSBjb21wYXJpc29uICg9 IEtFWSBBTElTVENBUikuCi1JZiBubyBzdWNoIHZhbHVlIGV4aXN0cywgdXNlIERFRkFVTFQgaW5z dGVhZC4KK0lmIG5vIHN1Y2ggdmFsdWUgZXhpc3RzLCByZXR1cm4gdGhlIGxpc3QgdW5jaGFuZ2Vk LgogVW5saWtlIGFjb25zLCB0aGlzIHJlbW92ZXMgdGhlIHByZXZpb3VzIGFzc29jaWF0aW9uIG9m IEtFWSAoYXNzdW1pbmcgaXQgaXMKIHVuaXF1ZSksIGJ1dCB0aGUgcmVzdWx0IG1heSBzdGlsbCBz aGFyZSBzdG9yYWdlIHdpdGggQUxJU1QuIgogICAobGV0ICgocGFpciByZXN0IChhbGlzdC1wb3Ag YWxpc3Qga2V5ID0pKSkKLSAgICAoYWNvbnMga2V5Ci0gICAgICAgICAgIChwcm9jIChpZiAocGFp cj8gcGFpcikKLSAgICAgICAgICAgICAgICAgICAgIChjZHIgcGFpcikKLSAgICAgICAgICAgICAg ICAgICAgIGRlZmF1bHQpKQotICAgICAgICAgICByZXN0KSkpCi0KLShkZWZpbmUgKGpzb2JqZWN0 LXVwZGF0ZSoganMgLiB1cGRhdGVzKQotICAiUmV0dXJuIGEganNvbiBvYmplY3QgbGlrZSBKUywg YnV0IHdpdGggYWxsIFVQREFURVMgYXBwbGllZC4gIEVhY2ggdXBkYXRlIGlzCi1hIGxpc3QgKEtF WSBQUk9DIFtERUZBVUxUXSksIHNvIHRoYXQgS0VZIGlzIG1hcHBlZCB0byB0aGUgcmVzdWx0IG9m IFBST0MKLWFwcGxpZWQgdG8gdGhlIHZhbHVlIHRvIHdoaWNoIEtFWSBpcyBtYXBwZWQgaW4gSlMu ICBJZiBubyBzdWNoIG1hcHBpbmcgZXhpc3RzLAotUFJPQyBpcyBpbnN0ZWFkIGFwcGxpZWQgdG8g REVGQVVMVCwgb3IgdG8gJyNmJyBpcyBubyBERUZBVUxUIGlzIHNwZWNpZmllZC4KLVRoZSB1cGRh dGUgdGFrZXMgcGxhY2UgZnJvbSBsZWZ0IHRvIHJpZ2h0LCBzbyBsYXRlciBVUERBVEVScyB3aWxs IHJlY2VpdmUgdGhlCi12YWx1ZXMgcmV0dXJuZWQgYnkgZWFybGllciBVUERBVEVScyBmb3IgdGhl IHNhbWUgS0VZLiIKLSAgKG1hdGNoIGpzCi0gICAgKCgnQCAuIGFsaXN0KQotICAgICAobGV0IGxv b3AgKChhbGlzdCBhbGlzdCkKLSAgICAgICAgICAgICAgICAodXBkYXRlcyB1cGRhdGVzKSkKLSAg ICAgICAobWF0Y2ggdXBkYXRlcwotICAgICAgICAgKCgpIChjb25zICdAIGFsaXN0KSkKLSAgICAg ICAgICgoKGtleSBwcm9jKSAuIHVwZGF0ZXMpCi0gICAgICAgICAgKGxvb3AgKGFsaXN0LXVwZGF0 ZSBhbGlzdCBrZXkgcHJvYyAjZiBlcXVhbD8pIHVwZGF0ZXMpKQotICAgICAgICAgKCgoa2V5IHBy b2MgZGVmYXVsdCkgLiB1cGRhdGVzKQotICAgICAgICAgIChsb29wIChhbGlzdC11cGRhdGUgYWxp c3Qga2V5IHByb2MgZGVmYXVsdCBlcXVhbD8pIHVwZGF0ZXMpKSkpKSkpCi0KLShkZWZpbmUgKGpz b2JqZWN0LXVuaW9uIGNvbWJpbmUgc2VlZCAuIG9iamVjdHMpCi0gICJNZXJnZSBPQkpFQ1RTIGlu dG8gU0VFRCBieSBhcHBseWluZyAoQ09NQklORSBLRVkgVkFMMCBWQUwpLCB3aGVyZSBWQUwwCi1p cyB0aGUgdmFsdWUgZm91bmQgaW4gdGhlIChwb3NzaWJseSB1cGRhdGVkKSBTRUVEIGFuZCBWQUwg aXMgdGhlIG5ldyB2YWx1ZQotZm91bmQgaW4gb25lIG9mIHRoZSBPQkpFQ1RTLiIKLSAgKG1hdGNo IHNlZWQKLSAgICAoKCdAIC4gYXNlZWQpCi0gICAgIChtYXRjaCBvYmplY3RzCi0gICAgICAgKCgp IHNlZWQpCi0gICAgICAgKCgoJ0AgLiBhbGlzdHMpIC4uLikKLSAgICAgICAgKGNvbnMKLSAgICAg ICAgICdACi0gICAgICAgICAoZm9sZCAobGFtYmRhIChhbGlzdCBhc2VlZCkKLSAgICAgICAgICAg ICAgICAgKGlmIChudWxsPyBhc2VlZCkgYWxpc3QKLSAgICAgICAgICAgICAgICAgICAgIChmb2xk Ci0gICAgICAgICAgICAgICAgICAgICAgKG1hdGNoLWxhbWJkYSoKLSAgICAgICAgICAgICAgICAg ICAgICAgICgoKGsgLiB2KSBhc2VlZCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAobGV0ICgo cGFpciB0YWlsIChhbGlzdC1wb3AgYWxpc3QgaykpKQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgKG1hdGNoIHBhaXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCNmIChhY29ucyBr IHYgYXNlZWQpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF8gLiB2MCkgKGFjb25z IGsgKGNvbWJpbmUgayB2MCB2KSBhc2VlZCkpKSkpKQotICAgICAgICAgICAgICAgICAgICAgIGFz ZWVkCi0gICAgICAgICAgICAgICAgICAgICAgYWxpc3QpKSkKLSAgICAgICAgICAgICAgIGFzZWVk Ci0gICAgICAgICAgICAgICBhbGlzdHMpKSkpKSkpCisgICAgKGlmIChwYWlyPyBwYWlyKQorICAg ICAgKGFjb25zIGtleSAocHJvYyAoY2RyIHBhaXIpKSByZXN0KQorICAgICAgYWxpc3QpKSkKIAot OzsgUG9zc2libHkgdXNlZnVsIGhlbHBlciBmdW5jdGlvbnM6Ci07OyAoZGVmaW5lIChuZXdlc3Qg a2V5IHZhbDAgdmFsKSB2YWwpCi07OyAoZGVmaW5lICh1bmtleWVkLT5rZXllZCBwcm9jKSAobGFt YmRhIChfa2V5IHZhbDAgdmFsKSAocHJvYyB2YWwwIHZhbCkpKQotCi0MCiA7OzsKIDs7OyBQaGFz ZXMuCiA7OzsKQEAgLTE0Miw4ICs5MCw4IEBAIChkZWZpbmUgKHNldC1ob21lIC4gXykKIAogKGRl ZmluZSAobW9kdWxlLW5hbWUgbW9kdWxlKQogICAobGV0KiAoKHBhY2thZ2UuanNvbiAoc3RyaW5n LWFwcGVuZCBtb2R1bGUgIi9wYWNrYWdlLmpzb24iKSkKLSAgICAgICAgIChwYWNrYWdlLW1ldGEg KGNhbGwtd2l0aC1pbnB1dC1maWxlIHBhY2thZ2UuanNvbiByZWFkLWpzb24pKSkKLSAgICAoanNv YmplY3QtcmVmIHBhY2thZ2UtbWV0YSAibmFtZSIpKSkKKyAgICAgICAgIChwYWNrYWdlLW1ldGEg KGNhbGwtd2l0aC1pbnB1dC1maWxlIHBhY2thZ2UuanNvbiBqc29uLT5zY20pKSkKKyAgICAoYXNz b2MtcmVmIHBhY2thZ2UtbWV0YSAibmFtZSIpKSkKIAogKGRlZmluZSAoaW5kZXgtbW9kdWxlcyBp bnB1dC1wYXRocykKICAgKGRlZmluZSAobGlzdC1tb2R1bGVzIGRpcmVjdG9yeSkKQEAgLTE2Nyw0 OSArMTE1LDU5IEBAIChkZWZpbmUqIChwYXRjaC1kZXBlbmRlbmNpZXMgIzprZXkgaW5wdXRzICM6 YWxsb3ctb3RoZXIta2V5cykKIAogICAoZGVmaW5lIGluZGV4IChpbmRleC1tb2R1bGVzIChtYXAg Y2RyIGlucHV0cykpKQogCi0gIChkZWZpbmUgcmVzb2x2ZS1kZXBlbmRlbmNpZXMKLSAgICAobWF0 Y2gtbGFtYmRhCi0gICAgICAoKCdAIC4gYWxpc3QpCi0gICAgICAgKGNvbnMgJ0AgKG1hcCAobWF0 Y2gtbGFtYmRhCi0gICAgICAgICAgICAgICAgICAgICAgICgoa2V5IC4gdmFsdWUpCi0gICAgICAg ICAgICAgICAgICAgICAgICAoY29ucyBrZXkgKGhhc2gtcmVmIGluZGV4IGtleSB2YWx1ZSkpKSkK LSAgICAgICAgICAgICAgICAgICAgIGFsaXN0KSkpKSkKKyAgKGRlZmluZSAocmVzb2x2ZS1kZXBl bmRlbmNpZXMgZGVwZW5kZW5jaWVzKQorICAgIChtYXAKKyAgICAgIChtYXRjaC1sYW1iZGEKKyAg ICAgICAgKChkZXBlbmRlbmN5IC4gdmVyc2lvbikKKyAgICAgICAgICAoY29ucyBkZXBlbmRlbmN5 IChoYXNoLXJlZiBpbmRleCBkZXBlbmRlbmN5IHZlcnNpb24pKSkpCisgICAgICBkZXBlbmRlbmNp ZXMpKQogCi0gICh3aXRoLWF0b21pYy1qc29uLWZpbGUtcmVwbGFjZW1lbnQgInBhY2thZ2UuanNv biIKKyAgKHdpdGgtYXRvbWljLWpzb24tZmlsZS1yZXBsYWNlbWVudAogICAgIChsYW1iZGEgKHBr Zy1tZXRhKQotICAgICAgKGpzb2JqZWN0LXVwZGF0ZSoKLSAgICAgICBwa2ctbWV0YQotICAgICAg IGAoImRldkRlcGVuZGVuY2llcyIgLHJlc29sdmUtZGVwZW5kZW5jaWVzIChAKSkKLSAgICAgICBg KCJkZXBlbmRlbmNpZXMiICwobGFtYmRhIChkZXBzKQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgKHJlc29sdmUtZGVwZW5kZW5jaWVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGpz b2JqZWN0LXVuaW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKGsgYSBi KSBiKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoanNvYmplY3QtcmVmIHBrZy1tZXRh ICJwZWVyRGVwZW5kZW5jaWVzIiAnKEApKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk ZXBzKSkpCi0gICAgICAgICAoQCkpKSkpCisgICAgICAoZm9sZAorICAgICAgICAobGFtYmRhIChw cm9jIHBrZy1tZXRhKSAocHJvYyBwa2ctbWV0YSkpCisgICAgICAgIHBrZy1tZXRhCisgICAgICAg IChsaXN0CisgICAgICAgICAgKGxhbWJkYSAocGtnLW1ldGEpCisgICAgICAgICAgICAoYWxpc3Qt dXBkYXRlIHBrZy1tZXRhICJkZXZEZXBlbmRlbmNpZXMiIHJlc29sdmUtZGVwZW5kZW5jaWVzKSkK KyAgICAgICAgICAobGFtYmRhIChwa2ctbWV0YSkKKyAgICAgICAgICAgIChhc3NvYy1zZXQhCisg ICAgICAgICAgICAgIHBrZy1tZXRhCisgICAgICAgICAgICAgICJkZXBlbmRlbmNpZXMiCisgICAg ICAgICAgICAgIChyZXNvbHZlLWRlcGVuZGVuY2llcworICAgICAgICAgICAgICAgIDsgQ29tYmlu ZWQgInBlZXJEZXBlbmRlbmNpZXMiIGFuZCAiZGVwZW5kZW5jaWVzIiBkZXBlbmRlbmNpZXMKKyAg ICAgICAgICAgICAgICA7IHdpdGggImRlcGVuZGVuY2llcyIgdGFraW5nIHByZWNlZGVudC4KKyAg ICAgICAgICAgICAgICAoZm9sZAorICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoZGVwZW5kZW5j eSBkZXBlbmRlbmNpZXMpCisgICAgICAgICAgICAgICAgICAgIChhc3NvYy1zZXQhIGRlcGVuZGVu Y2llcyAoY2FyIGRlcGVuZGVuY3kpIChjZHIgZGVwZW5kZW5jeSkpKQorICAgICAgICAgICAgICAg ICAgKGFzc29jLXJlZiogcGtnLW1ldGEgInBlZXJEZXBlbmRlbmNpZXMiICcoKSkKKyAgICAgICAg ICAgICAgICAgIChhc3NvYy1yZWYqIHBrZy1tZXRhICJkZXBlbmRlbmNpZXMiICcoKSkpKSkpKSkp KQogICAjdCkKIAotKGRlZmluZSAoZGVsZXRlLWRlcGVuZGVuY2llcyBhYnNlbnQpCisoZGVmaW5l IChkZWxldGUtZGVwZW5kZW5jaWVzIGRlcGVuZGVuY2llcy10by1yZW1vdmUpCiAgICJSZXdyaXRl ICdwYWNrYWdlLmpzb24nIHRvIGFsbG93IHRoZSBidWlsZCB0byBwcm9jZWVkIHdpdGhvdXQgcGFj a2FnZXMKLWxpc3RlZCBpbiBBQlNFTlQsIGEgbGlzdCBvZiBzdHJpbmdzIG5hbWluZyBucG0gcGFj a2FnZXMuCitsaXN0ZWQgaW4gJ2RlcGVuZGVuY2llcy10by1yZW1vdmUnLCBhIGxpc3Qgb2Ygc3Ry aW5ncyBuYW1pbmcgbnBtIHBhY2thZ2VzLgogCiBUbyBwcmV2ZW50IHRoZSBkZWxldGVkIGRlcGVu ZGVuY2llcyBmcm9tIGJlaW5nIHJlaW50cm9kdWNlZCwgdXNlIHRoaXMgZnVuY3Rpb24KIG9ubHkg YWZ0ZXIgdGhlICdwYXRjaC1kZXBlbmRlbmNpZXMnIHBoYXNlLiIKLSAgKGRlZmluZSBkZWxldGUt ZnJvbS1qc29iamVjdAotICAgIChtYXRjaC1sYW1iZGEKLSAgICAgICgoJ0AgLiBhbGlzdCkKLSAg ICAgICAoY29ucyAnQCAoZmlsdGVyIChtYXRjaC1sYW1iZGEKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgKChrIC4gXykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIChub3QgKG1lbWJlciBr IGFic2VudCkpKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGFsaXN0KSkpKSkKLQotICAod2l0 aC1hdG9taWMtanNvbi1maWxlLXJlcGxhY2VtZW50ICJwYWNrYWdlLmpzb24iCisgICh3aXRoLWF0 b21pYy1qc29uLWZpbGUtcmVwbGFjZW1lbnQKICAgICAobGFtYmRhIChwa2ctbWV0YSkKLSAgICAg IChqc29iamVjdC11cGRhdGUqCi0gICAgICAgcGtnLW1ldGEKLSAgICAgICBgKCJkZXZEZXBlbmRl bmNpZXMiICxkZWxldGUtZnJvbS1qc29iamVjdCAoQCkpCi0gICAgICAgYCgiZGVwZW5kZW5jaWVz IiAsZGVsZXRlLWZyb20tanNvYmplY3QgKEApKQotICAgICAgIGAoInBlZXJEZXBlbmRlbmNpZXMi ICxkZWxldGUtZnJvbS1qc29iamVjdCAoQCkpKSkpKQorICAgICAgKGZvbGQKKyAgICAgICAgKGxh bWJkYSAoZGVwZW5kZW5jeS1rZXkgcGtnLW1ldGEpCisgICAgICAgICAgKGFsaXN0LXVwZGF0ZQor ICAgICAgICAgICAgcGtnLW1ldGEKKyAgICAgICAgICAgIGRlcGVuZGVuY3kta2V5CisgICAgICAg ICAgICAobGFtYmRhIChkZXBlbmRlbmNpZXMpCisgICAgICAgICAgICAgIChyZW1vdmUKKyAgICAg ICAgICAgICAgICAobGFtYmRhIChkZXBlbmRlbmN5KQorICAgICAgICAgICAgICAgICAgKG1lbWJl ciAoY2FyIGRlcGVuZGVuY3kpIGRlcGVuZGVuY2llcy10by1yZW1vdmUpKQorICAgICAgICAgICAg ICAgIGRlcGVuZGVuY2llcykpKSkKKyAgICAgICAgcGtnLW1ldGEKKyAgICAgICAgKGxpc3QKKyAg ICAgICAgICAiZGV2RGVwZW5kZW5jaWVzIgorICAgICAgICAgICJkZXBlbmRlbmNpZXMiCisgICAg ICAgICAgInBlZXJEZXBlbmRlbmNpZXMiCisgICAgICAgICAgIm9wdGlvbmFsRGVwZW5kZW5jaWVz IikpKSkpCiAKIChkZWZpbmUqIChkZWxldGUtbG9ja2ZpbGVzICM6a2V5IGlucHV0cyAjOmFsbG93 LW90aGVyLWtleXMpCiAgICJEZWxldGUgJ3BhY2thZ2UtbG9jay5qc29uJywgJ3lhcm4ubG9jaycs IGFuZCAnbnBtLXNocmlua3dyYXAuanNvbicsIGlmIHRoZXkKQEAgLTIyOCw4ICsxODYsOCBAQCAo ZGVmaW5lKiAoY29uZmlndXJlICM6a2V5IG91dHB1dHMgaW5wdXRzICM6YWxsb3ctb3RoZXIta2V5 cykKICAgICAjdCkpCiAKIChkZWZpbmUqIChidWlsZCAjOmtleSBpbnB1dHMgIzphbGxvdy1vdGhl ci1rZXlzKQotICAobGV0ICgocGFja2FnZS1tZXRhIChjYWxsLXdpdGgtaW5wdXQtZmlsZSAicGFj a2FnZS5qc29uIiByZWFkLWpzb24pKSkKLSAgICAoaWYgKGpzb2JqZWN0LXJlZiAoanNvYmplY3Qt cmVmIHBhY2thZ2UtbWV0YSAic2NyaXB0cyIgJyhAKSkgImJ1aWxkIiAjZikKKyAgKGxldCAoKHBh Y2thZ2UtbWV0YSAoY2FsbC13aXRoLWlucHV0LWZpbGUgInBhY2thZ2UuanNvbiIganNvbi0+c2Nt KSkpCisgICAgKGlmIChhc3NvYy1yZWYqIChhc3NvYy1yZWYqIHBhY2thZ2UtbWV0YSAic2NyaXB0 cyIgJygpKSAiYnVpbGQiICNmKQogICAgICAgICAobGV0ICgobnBtIChzdHJpbmctYXBwZW5kIChh c3NvYy1yZWYgaW5wdXRzICJub2RlIikgIi9iaW4vbnBtIikpKQogICAgICAgICAgIChpbnZva2Ug bnBtICJydW4iICJidWlsZCIpKQogICAgICAgICAoZm9ybWF0ICN0ICJ0aGVyZSBpcyBubyBidWls ZCBzY3JpcHQgdG8gcnVufiUiKSkKQEAgLTMwMSwyMiArMjU5LDIwIEBAIChkZWZpbmUqIChhdm9p ZC1ub2RlLWd5cC1yZWJ1aWxkICM6a2V5IG91dHB1dHMgIzphbGxvdy1vdGhlci1rZXlzKQogICA7 OyBldmVuIG5lZWQgdG8gb3ZlcndyaXRlIHRoaXMgZmlsZS4gIFRoZXJlZm9yZSwgbGV0J3MgdXNl IHNvbWUgaGVscGVycwogICA7OyB0aGF0IHdlJ2Qgb3RoZXJ3aXNlIG5vdCBuZWVkLgogICAoZGVm aW5lIHBrZy1tZXRhCi0gICAgKGNhbGwtd2l0aC1pbnB1dC1maWxlIGluc3RhbGxlZC1wYWNrYWdl Lmpzb24gcmVhZC1qc29uKSkKKyAgICAoY2FsbC13aXRoLWlucHV0LWZpbGUgaW5zdGFsbGVkLXBh Y2thZ2UuanNvbiBqc29uLT5zY20pKQogICAoZGVmaW5lIHNjcmlwdHMKLSAgICAoanNvYmplY3Qt cmVmIHBrZy1tZXRhICJzY3JpcHRzIiAnKEApKSkKLSAgKGRlZmluZSAoanNvYmplY3Qtc2V0IGpz IGtleSB2YWwpCi0gICAgKGpzb2JqZWN0LXVwZGF0ZSoganMgKGxpc3Qga2V5IChjb25zdCB2YWwp KSkpCisgICAgKGFzc29jLXJlZiogcGtnLW1ldGEgInNjcmlwdHMiICcoKSkpCiAKLSAgKHdoZW4g KGVxdWFsPyAibm9kZS1neXAgcmVidWlsZCIgKGpzb2JqZWN0LXJlZiBzY3JpcHRzICJpbnN0YWxs IiAjZikpCisgICh3aGVuIChlcXVhbD8gIm5vZGUtZ3lwIHJlYnVpbGQiIChhc3NvYy1yZWYqIHNj cmlwdHMgImluc3RhbGwiICNmKSkKICAgICAoY2FsbC13aXRoLW91dHB1dC1maWxlIGluc3RhbGxl ZC1wYWNrYWdlLmpzb24KICAgICAgIChsYW1iZGEgKG91dCkKLSAgICAgICAgKHdyaXRlLWpzb24K LSAgICAgICAgIChqc29iamVjdC1zZXQgcGtnLW1ldGEKLSAgICAgICAgICAgICAgICAgICAgICAg InNjcmlwdHMiCi0gICAgICAgICAgICAgICAgICAgICAgIChqc29iamVjdC1zZXQgc2NyaXB0cwot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnN0YWxsIgotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlY2hvIEd1aXg6IGF2b2lkaW5nIG5vZGUtZ3lw IHJlYnVpbGQiKSkKLSAgICAgICAgIG91dCkpKSkpCisgICAgICAgIChzY20tPmpzb24KKyAgICAg ICAgICAoYXNzb2Mtc2V0ISBwa2ctbWV0YQorICAgICAgICAgICAgICAgICAgICAgICJzY3JpcHRz IgorICAgICAgICAgICAgICAgICAgICAgIChhc3NvYy1zZXQhIHNjcmlwdHMKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAiaW5zdGFsbCIKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiZWNobyBHdWl4OiBhdm9pZGluZyBub2RlLWd5cCByZWJ1aWxkIikpCisgICAg ICAgICAgb3V0KSkpKSkKIAogKGRlZmluZSAlc3RhbmRhcmQtcGhhc2VzCiAgIChtb2RpZnktcGhh c2VzIGdudTolc3RhbmRhcmQtcGhhc2VzCgpiYXNlLWNvbW1pdDogZTE2Y2RjZjM3ZDgyMjNiMzYz NGVjNWU2NTgzNTZjM2I3ZjE1NDg1OQotLSAKMi40Ni4wCgo= --00000000000009b154062a6fc654--
guix-patches@HIDDEN
:bug#74900
; Package guix-patches
.
Full text available.Received: (at 74900) by debbugs.gnu.org; 29 Dec 2024 21:56:13 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Dec 29 16:56:13 2024 Received: from localhost ([127.0.0.1]:56438 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tS1Gf-0007oq-1N for submit <at> debbugs.gnu.org; Sun, 29 Dec 2024 16:56:13 -0500 Received: from mail-vs1-f42.google.com ([209.85.217.42]:57704) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <d.khodabakhsh@HIDDEN>) id 1tS1Gd-0007od-NF for 74900 <at> debbugs.gnu.org; Sun, 29 Dec 2024 16:56:12 -0500 Received: by mail-vs1-f42.google.com with SMTP id ada2fe7eead31-4afe2a1849bso5034791137.3 for <74900 <at> debbugs.gnu.org>; Sun, 29 Dec 2024 13:56:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1735509306; x=1736114106; darn=debbugs.gnu.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=SezE+k8D2KqA/TRu4JurNjDs/CC+05H0eC3S8E/fXfc=; b=E+6WqttlWDPG+Fb3dGZY26gY9bPJO5Hc3zTz7+YmnOA/UhpCXkkX/8c/FxVsSMirod z1t+R888nTJHctqotG2PDEe1Q3IVkHM8WcOXHuhBGob6PF4usvLwIOj2qe4oQZjKfS8M ymwzP1tesLsaJUZVIe9xSUPq8xYuygZsoyTj6UiOzo7lxODOu5O1zJzkRa5fWmB4dvc/ 0LmRwkXQNQBZ4WiOIbT+qaLNESmft4uxOJsfph2C1INOu6iDTXL9gIUlR+SvWCWQ0CQK cwcD4Vr1ksbbBcV+6kg4Up/KpUjdt3BQbs2/cOHEeeR6w6QAorwPeu9dcc1Jv5P5abW3 80oQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1735509306; x=1736114106; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=SezE+k8D2KqA/TRu4JurNjDs/CC+05H0eC3S8E/fXfc=; b=kefmXG+qM/uj5P1EKCMX4F2NnmsXJleTdjXxlHp5gSeWW6j6+X3SlLgtgsK6tVLeD3 Lvo65qZfisA99MRRpjLHYn9UEPYRLTAN8tOZViN6iSNn0++w6GVYS3J15TXzmoSiCG1P b0srLibp/AZ9QSS9Wk/eMWhBIuORY/zuPEYheE/k8SKj+zTE+bNJgNIsg6D2KolCT6Nv mn1DbqMz76XT+acOo2e3NWkTRQhl2V/ORflSfsZEh1DT1pY4uS6yvfWMLX1aIEJ2e+6T FJ77WSS6+WHpZUGSY4c5Y8Ca/YmZCtFZtYnn/Nbws1afwR3QwjpzWi+Kpn93tmCc01fO Q+5A== X-Gm-Message-State: AOJu0Yx3sZFkMrjMyBw2bpzWvBe/K306kMHvfzVgssh7t5dZW8VkQ4+l a7zwMOHea1tRAoq35FAtxp/k22CfPyBFPCudOUWtgN0rC9wSx5++dEHtMWkqCEvq9QdxZHd2lq7 tG4Nj9n1zcE67hRL2GwLXTSOng3dfyw== X-Gm-Gg: ASbGncs/kTBAWekJEzlvN5Oekl0NeuhZ9x2jOQw5W5rYVWQ2odEZdSLQxyKC6KOcMdV Bzg+BWlNk3twd2Ar+8LmkC27Nsgp1w63xA4jgugTl X-Google-Smtp-Source: AGHT+IHXqF5wL9aCICkvAYwD947I0vGJxRBofHHV0cu0IVFTXYkpxXEidCJM1iSWTlOKMa0XGEawTg9yAZ33w5yiRA0= X-Received: by 2002:a05:6102:2c83:b0:4af:56a8:737c with SMTP id ada2fe7eead31-4b2cc37dc54mr29706773137.12.1735509305912; Sun, 29 Dec 2024 13:55:05 -0800 (PST) MIME-Version: 1.0 From: Daniel Khodabakhsh <d.khodabakhsh@HIDDEN> Date: Sun, 29 Dec 2024 21:54:54 +0000 Message-ID: <CAADuFnJDptr3fw_JxaYN8G_ZxjGFkn-2XtYFWeK6dDLMnZHO2g@HIDDEN> Subject: [PATCH 0/2] Improve node-build-system helper procedures To: 74900 <at> debbugs.gnu.org Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 74900 X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) Added a new patch to add a few helper functions to clean up operations which modify the package.json file such as removing and replacing fields. The first patch is the same as above, use (json) instead of (guix build json), and the second patch expands on the first by introducing new exported procedures.
guix-patches@HIDDEN
:bug#74900
; Package guix-patches
.
Full text available.Received: (at 74900) by debbugs.gnu.org; 28 Dec 2024 19:01:55 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Dec 28 14:01:55 2024 Received: from localhost ([127.0.0.1]:52616 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tRc4P-00049N-V4 for submit <at> debbugs.gnu.org; Sat, 28 Dec 2024 14:01:55 -0500 Received: from mail-ua1-f48.google.com ([209.85.222.48]:48200) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <d.khodabakhsh@HIDDEN>) id 1tRc4M-00049E-MQ for 74900 <at> debbugs.gnu.org; Sat, 28 Dec 2024 14:01:52 -0500 Received: by mail-ua1-f48.google.com with SMTP id a1e0cc1a2514c-85c529e72bcso1428083241.0 for <74900 <at> debbugs.gnu.org>; Sat, 28 Dec 2024 11:01:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1735412450; x=1736017250; darn=debbugs.gnu.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=JijxkorW4tGvUCWGskSVdt1thD5ggcavhej+UeOMNOA=; b=MaATga8kQEXHWgWlrYpCyGecUkVB4DtO8a65HB1cU3+1xbFOA9ZgLVUCg5tZU3Fd+I 3h3Bl23HwNbbN9Ac3oIozGNcd0sA9Vd3zEfeUEJ68pTJ9mtZ9O5xK+GG2HAwt8xolRdJ kTwnPyKPkfkGRZDCI5eO2qMGbevROSz5rAfhndC21PL9MW3oT/KDP2YkVOL1GRb2vkeL YtSHPNabHsLbvzNrhhLJJNpckRs/xnvdzdub1GLUVCxRSyDUiV2c1mDPx2iQ+RPLxgZf v6WUsfKglLSaQI//Sb4kT9CeAmoZ4G1I0iDuXH5y9uS4zWMlJqezL2YAe3x/ovFOPUAC d5lw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1735412450; x=1736017250; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=JijxkorW4tGvUCWGskSVdt1thD5ggcavhej+UeOMNOA=; b=dMxVhaRmZdn3lvtDwpLjOgcmRdcMVCOMWDed0XcZIf3IT4D895SzVz4+iz2vK2w44n MlXYBh+YCw+96JWMuimuc+LWbDHGOUjrdlq35C+lSDqxG69ez7NJIr1jW7WNWhYKt1Xk HoPi5VOyzIYc29z4xnsrdW2kN7ljry353dGHUgZAUvT62Cb4Faroy4E3hRJedvcgSYLd 3CCKVtr1TF2LBoFeUnTjV3kN9phdiqtVKS4CX1yRwLH7jSp5R/kh7dRWIo7e2p0Ua2yI WXnIKbIfTHdjdHYXd2Xnmd9li+z0C1ubliPHiR/QSRnVy8Yhc7/62xaX0+TvohEOoZq4 W3pg== X-Gm-Message-State: AOJu0YyvSfaPDm0GW6HYvQzkPdEmXsBCUhqX8QxpcnEhPqnbmnqg/j5L ulzDEgGxe3gUSTo4nxhGMUVgR6ONfeXaoRL1S6LyZuYXoP6C8owSNek/Y3362C64/vgtAiOucSd RB/3mfX8wvU8PzAe/yV5vQrvct1RCPA== X-Gm-Gg: ASbGncvTMYP/OPLX07iKfXDF66ZOuVPHrCHZqm2/LTUKWY0AcGCfaKojdUzECZrvwmE 74QFWZNxK/0UXSRqoZk1uTO1uB6eOvDFE5YasboQc X-Google-Smtp-Source: AGHT+IFPycIeU2lCWIkp08Ofv2XOCAZRbXcbGNQH4pNeN5ezrsNhCxlCaKx84y+9KFz12GTWNH44vjGqb3NqzjIgLSc= X-Received: by 2002:a05:6102:c4e:b0:4b2:af77:b53a with SMTP id ada2fe7eead31-4b2cc36a2dcmr25651579137.11.1735412449861; Sat, 28 Dec 2024 11:00:49 -0800 (PST) MIME-Version: 1.0 References: <CAADuFn++tHWy7CAzNv4TP3FCF4AGwMPeq1MDBGeH11Q9zcDxAw@HIDDEN> <CAADuFnKcD0wxAZfg7cBPV1eWG9NW3Tm=nOHtd6Rcd9wfSqpsuA@HIDDEN> <CAADuFnK=BCCtqfrcjx1-tDo=HziX+LtXdLz6zy6Ejy0yv30Qog@HIDDEN> In-Reply-To: <CAADuFnK=BCCtqfrcjx1-tDo=HziX+LtXdLz6zy6Ejy0yv30Qog@HIDDEN> From: Daniel Khodabakhsh <d.khodabakhsh@HIDDEN> Date: Sat, 28 Dec 2024 19:00:38 +0000 Message-ID: <CAADuFn+rj-hS4rRt9a442wpBvapfO86Xpoo+mdj_4O4RRq0kew@HIDDEN> Subject: Re: To: 74900 <at> debbugs.gnu.org Content-Type: multipart/mixed; boundary="0000000000009d1a6f062a593214" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 74900 X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) --0000000000009d1a6f062a593214 Content-Type: text/plain; charset="UTF-8" Tested the patch and ran into an issue that was introduced when I shortened some lines to within 80 characters, fixed this now and also included the additional rationale in the patch descriptions. --0000000000009d1a6f062a593214 Content-Type: text/x-patch; charset="UTF-8"; name="0001-Replace-guix-build-json-with-json-in-node-build-syst.patch" Content-Disposition: attachment; filename="0001-Replace-guix-build-json-with-json-in-node-build-syst.patch" Content-Transfer-Encoding: base64 Content-ID: <f_m58jqupe0> X-Attachment-Id: f_m58jqupe0 RnJvbSBlNGVhN2I4OGNlMzliMWY1YjI0ODE4MTc0ZjJlNWMxNzQyNGYzYWRjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpNZXNzYWdlLUlEOiA8ZTRlYTdiODhjZTM5YjFmNWIyNDgxODE3NGYyZTVj MTc0MjRmM2FkYy4xNzM1NDExOTY0LmdpdC5kLmtob2RhYmFraHNoQGdtYWlsLmNvbT4KRnJvbTog RGFuaWVsIEtob2RhYmFraHNoIDxkLmtob2RhYmFraHNoQGdtYWlsLmNvbT4KRGF0ZTogVGh1LCAy NiBEZWMgMjAyNCAwNDozNTozOSAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIFJlcGxhY2UgKGd1aXgg YnVpbGQganNvbikgd2l0aCAoanNvbikgaW4gbm9kZSBidWlsZCBzeXN0ZW0KClRoaXMgY2hhbmdl IHJlcGxhY2VzIHRoZSB1c2Ugb2YgKGd1aXggYnVpbGQganNvbikgd2l0aCAoanNvbikgZm9yIHRo ZSBub2RlIGVjb3N5c3RlbS4KU2luY2UgZ3VpbGUtanNvbiBpcyBhIGRlcGVuZGVuY3kgb2YgR3Vp eCwgYW5kIGl0J3MgdXNlZCBlbHNld2hlcmUgaW4gdGhlIHByb2plY3QsIGl0IG1ha2VzIHNlbnNl IHRvIHVzZSB0aGlzIGluc3RlYWQgb2Ygcm9sbGluZyBvdXIgb3duIEpTT04gaW1wbGVtZW50YXRp b24gd2l0aCAoZ3VpeCBidWlsZCBqc29uKS4KKGd1aXggYnVpbGQganNvbikgYWxzbyBoYXMgYSBm ZXcgaXNzdWVzOgogLSB3cml0ZS1qc29uIGVzY2FwZXMgZm9yd2FyZCBzbGFzaGVzIGluIHN0cmlu Z3MgZm9yIHNvbWUgcmVhc29uICgiLyIgYmVjb21lICJcLyIpCiAtIHJlYWQtanNvbiBwcm9kdWNl cyBhIHN0cnVjdHVyZSBzaW1pbGFyIHRvIGFuIGFzc29jaWF0aW9uIGxpc3QgYnV0IHdpdGggJ0An IHRvIGluZGljYXRlIGFuIG9iamVjdCwgbWFraW5nIGl0IG5vdCBwb3NzaWJsZSB0byB1c2UgYXNz b2NpYXRpb24gbGlzdCBwcm9jZWR1cmVzIGRpcmVjdGx5LgpUaGlzIGlzIG9uZSBzdGVwIHRvIG1v dmUgYXdheSBmcm9tIChndWl4IGJ1aWxkIGpzb24pLCB0aGVyZSB3aWxsIGJlIG90aGVyIGNoYW5n ZXMgdG8gcmVtb3ZlIHRoZSBvdGhlciB1c2VzIG9mIGl0LgoKU2lnbmVkLW9mZi1ieTogRGFuaWVs IEtob2RhYmFraHNoIDxkLmtob2RhYmFraHNoQGdtYWlsLmNvbT4KQ2hhbmdlLUlkOiBJOWZkNTE1 MmE5OGI2YTI0MWQ0MTRlOWE5NGFiMTc5YzljYWJjZmI4NQotLS0KIGdudS9wYWNrYWdlcy9ub2Rl LXh5ei5zY20gICAgICAgIHwgMTQ4ICsrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KIGd1aXgvYnVp bGQtc3lzdGVtL25vZGUuc2NtICAgICAgIHwgICA2ICstCiBndWl4L2J1aWxkL25vZGUtYnVpbGQt c3lzdGVtLnNjbSB8IDE4MCArKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tCiAzIGZpbGVz IGNoYW5nZWQsIDEzOSBpbnNlcnRpb25zKCspLCAxOTUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvZ251L3BhY2thZ2VzL25vZGUteHl6LnNjbSBiL2dudS9wYWNrYWdlcy9ub2RlLXh5ei5zY20K aW5kZXggZTk4ZWRhMmEwMS4uZWMzZjlmYmZiMSAxMDA2NDQKLS0tIGEvZ251L3BhY2thZ2VzL25v ZGUteHl6LnNjbQorKysgYi9nbnUvcGFja2FnZXMvbm9kZS14eXouc2NtCkBAIC03LDYgKzcsNyBA QAogOzs7IENvcHlyaWdodCDCqSAyMDIxIERocnV2aW4gR2FuZGhpIDxjb250YWN0QGRocnV2aW4u ZGV2PgogOzs7IENvcHlyaWdodCDCqSAyMDIyIE5pY29sYXMgR3JhdmVzIDxuZ3JhdmVzQG5ncmF2 ZXMuZnI+CiA7OzsgQ29weXJpZ2h0IMKpIDIwMjMgSmVsbGUgTGljaHQgPGpsaWNodEBmc2ZlLm9y Zz4KKzs7OyBDb3B5cmlnaHQgwqkgMjAyNCBEYW5pZWwgS2hvZGFiYWtoc2ggPGQua2hvZGFiYWto c2hAZ21haWwuY29tPgogOzs7CiA7OzsgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIEd1aXguCiA7 OzsKQEAgLTI0LDE0ICsyNSwxNCBAQAogOzs7IGFsb25nIHdpdGggR05VIEd1aXguICBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiAKIChkZWZpbmUtbW9kdWxlIChn bnUgcGFja2FnZXMgbm9kZS14eXopCi0gICM6dXNlLW1vZHVsZSAoKGd1aXggbGljZW5zZXMpICM6 cHJlZml4IGxpY2Vuc2U6KQogICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBzcWxpdGUpCiAg ICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIHB5dGhvbikKICAgIzp1c2UtbW9kdWxlIChnbnUg cGFja2FnZXMgd2ViKQorICAjOnVzZS1tb2R1bGUgKGd1aXggYnVpbGQtc3lzdGVtIG5vZGUpCiAg ICM6dXNlLW1vZHVsZSAoZ3VpeCBnZXhwKQotICAjOnVzZS1tb2R1bGUgKGd1aXggcGFja2FnZXMp CiAgICM6dXNlLW1vZHVsZSAoZ3VpeCBnaXQtZG93bmxvYWQpCi0gICM6dXNlLW1vZHVsZSAoZ3Vp eCBidWlsZC1zeXN0ZW0gbm9kZSkpCisgICM6dXNlLW1vZHVsZSAoKGd1aXggbGljZW5zZXMpICM6 cHJlZml4IGxpY2Vuc2U6KQorICAjOnVzZS1tb2R1bGUgKGd1aXggcGFja2FnZXMpKQogCiA7OzsK IDs7OyBQbGVhc2U6IFRyeSB0byBhZGQgbmV3IG1vZHVsZSBwYWNrYWdlcyBpbiBhbHBoYWJldGlj IG9yZGVyLgpAQCAtNjksMTkgKzcwLDE3IEBAIChkZWZpbmUtcHVibGljIG5vZGUtYWNvcm4KICAg ICAgICAgICAgICA7OyBpdCB3b3VsZCB0cnkgdG8gdXNlIHRoZSBidWlsZCBlbnZpcm9ubWVudCBh bmQgd291bGQgYmxvY2sgdGhlCiAgICAgICAgICAgICAgOzsgYXV0b21hdGljIGJ1aWxkaW5nIGJ5 IG90aGVyIHBhY2thZ2VzIG1ha2luZyB1c2Ugb2Ygbm9kZS1hY29ybi4KICAgICAgICAgICAgICA7 OyBUT0RPOiBBZGQgdXRpbGl0eSBmdW5jdGlvbgotICAgICAgICAgICAgICh3aXRoLWF0b21pYy1q c29uLWZpbGUtcmVwbGFjZW1lbnQgInBhY2thZ2UuanNvbiIKLSAgICAgICAgICAgICAgIChtYXRj aC1sYW1iZGEKLSAgICAgICAgICAgICAgICAgKCgnQCAuIHBrZy1tZXRhLWFsaXN0KQotICAgICAg ICAgICAgICAgICAgKGNvbnMgJ0AgKG1hcCAobWF0Y2gtbGFtYmRhCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKCgic2NyaXB0cyIgQCAuIHNjcmlwdHMtYWxpc3QpCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAoInNjcmlwdHMiIEAgLEAoZmlsdGVyIChtYXRj aC1sYW1iZGEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoKCJwcmVwYXJlIiAuIF8pCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNmKQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN0 KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2NyaXB0cy1hbGlzdCkpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChvdGhlciBvdGhlcikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBrZy1tZXRh LWFsaXN0KSkpKSkpKQorICAgICAgICAgICAgICh3aXRoLWF0b21pYy1qc29uLWZpbGUtcmVwbGFj ZW1lbnQgKGxhbWJkYSAocGtnLW1ldGEtYWxpc3QpCisgICAgICAgICAgICAgICAobWFwCisgICAg ICAgICAgICAgICAgIChtYXRjaC1sYW1iZGEKKyAgICAgICAgICAgICAgICAgICAoKCJzY3JpcHRz IiAuIHNjcmlwdHMtYWxpc3QpCisgICAgICAgICAgICAgICAgICAgICAoY29ucyAic2NyaXB0cyIg KGZpbHRlcgorICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2gtbGFtYmRhCisgICAgICAgICAg ICAgICAgICAgICAgICAgKCgicHJlcGFyZSIgLiBfKSAjZikKKyAgICAgICAgICAgICAgICAgICAg ICAgICAoXyAjdCkpCisgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdHMtYWxpc3QpKSkKKyAg ICAgICAgICAgICAgICAgICAob3RoZXIgb3RoZXIpKQorICAgICAgICAgICAgICAgICBwa2ctbWV0 YS1hbGlzdCkpKSkpCiAgICAgICAgICAocmVwbGFjZSAnYnVpbGQKICAgICAgICAgICAgKGxhbWJk YSogKCM6a2V5IGlucHV0cyBuYXRpdmUtaW5wdXRzICM6YWxsb3ctb3RoZXIta2V5cykKICAgICAg ICAgICAgICAobGV0ICgoZXNidWlsZCAoc2VhcmNoLWlucHV0LWZpbGUgKG9yIG5hdGl2ZS1pbnB1 dHMgaW5wdXRzKQpAQCAtMTU4LDIzICsxNTcsMTcgQEAgKGRlZmluZS1wdWJsaWMgbm9kZS1hZGRv bi1hcGkKICAgICAgICAgICAgKGxhbWJkYSBhcmdzCiAgICAgICAgICAgICAgKGRlZmluZSBuZXct dGVzdC1zY3JpcHQKICAgICAgICAgICAgICAgICJlY2hvIHN0b3BwaW5nIGFmdGVyIHByZXRlc3Qg b24gR3VpeCIpCi0gICAgICAgICAgICAgKHdpdGgtYXRvbWljLWpzb24tZmlsZS1yZXBsYWNlbWVu dCAicGFja2FnZS5qc29uIgotICAgICAgICAgICAgICAgKG1hdGNoLWxhbWJkYQotICAgICAgICAg ICAgICAgICAoKCdAIC4gcGtnLW1ldGEtYWxpc3QpCi0gICAgICAgICAgICAgICAgICAoY29ucwot ICAgICAgICAgICAgICAgICAgICdACi0gICAgICAgICAgICAgICAgICAgKG1hcCAobWF0Y2gtbGFt YmRhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICgoInNjcmlwdHMiICdAIC4gc2NyaXB0cy1h bGlzdCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGAoInNjcmlwdHMiIEAgLEAobWFwICht YXRjaC1sYW1iZGEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKCgidGVzdCIgLiBfKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGNvbnMgInRlc3QiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXctdGVzdC1zY3JpcHQpKQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3RoZXIKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyKSkKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdHMtYWxpc3Qp KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKG90aGVyCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICBvdGhlcikpCi0gICAgICAgICAgICAgICAgICAgICAgICBwa2ctbWV0YS1hbGlzdCkp KSkpKSkpKSkKKyAgICAgICAgICAgICAod2l0aC1hdG9taWMtanNvbi1maWxlLXJlcGxhY2VtZW50 IChsYW1iZGEgKHBrZy1tZXRhLWFsaXN0KQorICAgICAgICAgICAgICAgKG1hcAorICAgICAgICAg ICAgICAgICAobWF0Y2gtbGFtYmRhCisgICAgICAgICAgICAgICAgICAgKCgic2NyaXB0cyIgLiBz Y3JpcHRzLWFsaXN0KQorICAgICAgICAgICAgICAgICAgICAgKGNvbnMgInNjcmlwdHMiIChtYXAK KyAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoLWxhbWJkYQorICAgICAgICAgICAgICAgICAg ICAgICAgICgoInRlc3QiIC4gXykgKGNvbnMgInRlc3QiIG5ldy10ZXN0LXNjcmlwdCkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgKG90aGVyIG90aGVyKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgc2NyaXB0cy1hbGlzdCkpKQorICAgICAgICAgICAgICAgICAgIChvdGhlciBvdGhlcikpCisg ICAgICAgICAgICAgICAgIHBrZy1tZXRhLWFsaXN0KSkpKSkpKSkKICAgICAoaG9tZS1wYWdlICJo dHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUtYWRkb24tYXBpIikKICAgICAoc3lub3BzaXMg Ik5vZGUuanMgQVBJIChOb2RlLUFQSSkgaGVhZGVyLW9ubHkgQysrIHdyYXBwZXJzIikKICAgICAo ZGVzY3JpcHRpb24gIlRoaXMgbW9kdWxlIGNvbnRhaW5zIGhlYWRlci1vbmx5IEMrKyB3cmFwcGVy IGNsYXNzZXMgd2hpY2gKQEAgLTEyMjMsMjIgKzEyMTYsMTkgQEAgKGRlZmluZS1wdWJsaWMgbm9k ZS1zZXJpYWxwb3J0LWJpbmRpbmdzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAibm9kZS1hYmkiKSkpKQogICAgICAgICAgKGFkZC1hZnRlciAnY2hkaXIgJ2F2b2lkLXByZWJ1 aWxkLWluc3RhbGwKICAgICAgICAgICAgKGxhbWJkYSBhcmdzCi0gICAgICAgICAgICAgKHdpdGgt YXRvbWljLWpzb24tZmlsZS1yZXBsYWNlbWVudCAicGFja2FnZS5qc29uIgotICAgICAgICAgICAg ICAgKG1hdGNoLWxhbWJkYQotICAgICAgICAgICAgICAgICAoKCdAIC4gcGtnLW1ldGEtYWxpc3Qp Ci0gICAgICAgICAgICAgICAgICAoY29ucyAnQCAobWFwIChtYXRjaC1sYW1iZGEKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoKCJzY3JpcHRzIiBAIC4gc2NyaXB0cy1hbGlzdCkK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCgic2NyaXB0cyIgQCAsQChmaWx0 ZXIgKG1hdGNoLWxhbWJkYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICgoImluc3RhbGwiIC4gXykKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2YpCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF8K LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgI3QpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzY3JpcHRzLWFsaXN0KSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKCgiZ3lwZmlsZSIgLiBfKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnKCJneXBmaWxlIiAuICNmKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAob3RoZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIpKQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwa2ctbWV0YS1hbGlzdCkpKSkpKSkpCisgICAg ICAgICAgICAgKHdpdGgtYXRvbWljLWpzb24tZmlsZS1yZXBsYWNlbWVudCAobGFtYmRhIChwa2ct bWV0YS1hbGlzdCkKKyAgICAgICAgICAgICAgIChtYXAKKyAgICAgICAgICAgICAgICAgKG1hdGNo LWxhbWJkYQorICAgICAgICAgICAgICAgICAgICgoInNjcmlwdHMiIC4gc2NyaXB0cy1hbGlzdCkK KyAgICAgICAgICAgICAgICAgICAgIChjb25zICJzY3JpcHRzIiAoZmlsdGVyCisgICAgICAgICAg ICAgICAgICAgICAgIChtYXRjaC1sYW1iZGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCJp bnN0YWxsIiAuIF8pICNmKQorICAgICAgICAgICAgICAgICAgICAgICAgIChfICN0KSkKKyAgICAg ICAgICAgICAgICAgICAgICAgc2NyaXB0cy1hbGlzdCkpKQorICAgICAgICAgICAgICAgICAgICgo Imd5cGZpbGUiIC4gXykKKyAgICAgICAgICAgICAgICAgICAgIChjb25zICJneXBmaWxlIiAjZikp CisgICAgICAgICAgICAgICAgICAgKG90aGVyIG90aGVyKSkKKyAgICAgICAgICAgICAgICAgcGtn LW1ldGEtYWxpc3QpKSkpKSkKICAgICAgICAjOnRlc3RzPyAjZikpCiAgICAgKHN5bm9wc2lzICJB YnN0cmFjdCBiYXNlIGNsYXNzIGZvciBOb2RlIFNlcmlhbFBvcnQgYmluZGluZ3MiKQogICAgIChk ZXNjcmlwdGlvbiAiTm9kZSBTZXJpYWxQb3J0IGlzIGEgbW9kdWxhciBzdWl0ZSBvZiBOb2RlLmpz IHBhY2thZ2VzIGZvcgpAQCAtMTUyNCwzOSArMTUxNCwzMyBAQCAoZGVmaW5lLXB1YmxpYyBub2Rl LXNxbGl0ZTMKICAgICAgICAgICAgICAoc3Vic3RpdHV0ZSogIi5ucG1pZ25vcmUiCiAgICAgICAg ICAgICAgICAoKCJsaWIvYmluZGluZyIpCiAgICAgICAgICAgICAgICAgIiNsaWIvYmluZGluZyAj IDwtIHBhdGNoZWQgZm9yIEd1aXgiKSkKLSAgICAgICAgICAgICAod2l0aC1hdG9taWMtanNvbi1m aWxlLXJlcGxhY2VtZW50ICJwYWNrYWdlLmpzb24iCi0gICAgICAgICAgICAgICAobWF0Y2gtbGFt YmRhCi0gICAgICAgICAgICAgICAgICgoJ0AgLiBwa2ctbWV0YS1hbGlzdCkKLSAgICAgICAgICAg ICAgICAgIChtYXRjaCAoYXNzb2MtcmVmIHBrZy1tZXRhLWFsaXN0ICJiaW5hcnkiKQotICAgICAg ICAgICAgICAgICAgICAoKCdAIC4gYmluYXJ5LWFsaXN0KQotICAgICAgICAgICAgICAgICAgICAg OzsgV2hlbiBpdCBidWlsZHMgZnJvbSBzb3VyY2UsIG5vZGUtcHJlLWd5cCBzdXBwbGllcwotICAg ICAgICAgICAgICAgICAgICAgOzsgbW9kdWxlX25hbWUgYW5kIG1vZHVsZV9wYXRoIGJhc2VkIG9u IHRoZSBlbnRyaWVzIHVuZGVyCi0gICAgICAgICAgICAgICAgICAgICA7OyAiYmluYXJ5IiBmcm9t ICJwYWNrYWdlLmpzb24iLCBzbyB0aGlzIHBhY2thZ2UncwotICAgICAgICAgICAgICAgICAgICAg OzsgImJpbmRpbmcuZ3lwIiBkb2Vzbid0IGRlZmluZSB0aGVtLiBUaHVzLCB3ZSBhbHNvIG5lZWQK LSAgICAgICAgICAgICAgICAgICAgIDs7IHRvIHN1cHBseSB0aGVtLiBUaGUgR1lQX0RFRklORVMg ZW52aXJvbm1lbnQgdmFyaWFibGUKLSAgICAgICAgICAgICAgICAgICAgIDs7IHR1cm5zIG91dCB0 byBiZSB0aGUgZWFzaWVzdCB3YXkgdG8gbWFrZSBzdXJlIHRoZXkgYXJlCi0gICAgICAgICAgICAg ICAgICAgICA7OyBwcm9wYWdhdGVkIGZyb20gbnBtIHRvIG5vZGUtZ3lwIHRvIGd5cC4KLSAgICAg ICAgICAgICAgICAgICAgIChzZXRlbnYgIkdZUF9ERUZJTkVTIgotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoc3RyaW5nLWFwcGVuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Im1vZHVsZV9uYW1lPSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhc3NvYy1yZWYg YmluYXJ5LWFsaXN0ICJtb2R1bGVfbmFtZSIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2R1bGVfcGF0aD0iCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoYXNzb2MtcmVmIGJpbmFyeS1hbGlzdCAibW9kdWxl X3BhdGgiKSkpKSkKLSAgICAgICAgICAgICAgICAgIDs7IFdlIG5lZWQgdG8gcmVtb3ZlIHRoZSBp bnN0YWxsIHNjcmlwdCBmcm9tICJwYWNrYWdlLmpzb24iLAotICAgICAgICAgICAgICAgICAgOzsg YXMgaXQgd291bGQgdHJ5IHRvIHVzZSBub2RlLXByZS1neXAgYW5kIHdvdWxkIGJsb2NrIHRoZQot ICAgICAgICAgICAgICAgICAgOzsgYXV0b21hdGljIGJ1aWxkaW5nIHBlcmZvcm1lZCBieSBgbnBt IGluc3RhbGxgLgotICAgICAgICAgICAgICAgICAgKGNvbnMgJ0AgKG1hcCAobWF0Y2gtbGFtYmRh Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgic2NyaXB0cyIgQCAuIHNjcmlw dHMtYWxpc3QpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAoInNjcmlwdHMi IEAgLEAoZmlsdGVyIChtYXRjaC1sYW1iZGEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCJpbnN0YWxsIiAuIF8pCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNm KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChfCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICN0KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0cy1hbGlzdCkpKQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChvdGhlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBvdGhlcikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBrZy1tZXRhLWFs aXN0KSkpKSkpKSkpKQorICAgICAgICAgICAgICh3aXRoLWF0b21pYy1qc29uLWZpbGUtcmVwbGFj ZW1lbnQgKGxhbWJkYSAocGtnLW1ldGEtYWxpc3QpCisgICAgICAgICAgICAgICAobGV0ICgoYmlu YXJ5LWFsaXN0IChhc3NvYy1yZWYgcGtnLW1ldGEtYWxpc3QgImJpbmFyeSIpKSkKKyAgICAgICAg ICAgICAgICAgOzsgV2hlbiBpdCBidWlsZHMgZnJvbSBzb3VyY2UsIG5vZGUtcHJlLWd5cCBzdXBw bGllcworICAgICAgICAgICAgICAgICA7OyBtb2R1bGVfbmFtZSBhbmQgbW9kdWxlX3BhdGggYmFz ZWQgb24gdGhlIGVudHJpZXMgdW5kZXIKKyAgICAgICAgICAgICAgICAgOzsgImJpbmFyeSIgZnJv bSAicGFja2FnZS5qc29uIiwgc28gdGhpcyBwYWNrYWdlJ3MKKyAgICAgICAgICAgICAgICAgOzsg ImJpbmRpbmcuZ3lwIiBkb2Vzbid0IGRlZmluZSB0aGVtLiBUaHVzLCB3ZSBhbHNvIG5lZWQKKyAg ICAgICAgICAgICAgICAgOzsgdG8gc3VwcGx5IHRoZW0uIFRoZSBHWVBfREVGSU5FUyBlbnZpcm9u bWVudCB2YXJpYWJsZQorICAgICAgICAgICAgICAgICA7OyB0dXJucyBvdXQgdG8gYmUgdGhlIGVh c2llc3Qgd2F5IHRvIG1ha2Ugc3VyZSB0aGV5IGFyZQorICAgICAgICAgICAgICAgICA7OyBwcm9w YWdhdGVkIGZyb20gbnBtIHRvIG5vZGUtZ3lwIHRvIGd5cC4KKyAgICAgICAgICAgICAgICAgKHNl dGVudiAiR1lQX0RFRklORVMiIChzdHJpbmctYXBwZW5kCisgICAgICAgICAgICAgICAgICAgIm1v ZHVsZV9uYW1lPSIKKyAgICAgICAgICAgICAgICAgICAoYXNzb2MtcmVmIGJpbmFyeS1hbGlzdCAi bW9kdWxlX25hbWUiKQorICAgICAgICAgICAgICAgICAgICIgbW9kdWxlX3BhdGg9IgorICAgICAg ICAgICAgICAgICAgIChhc3NvYy1yZWYgYmluYXJ5LWFsaXN0ICJtb2R1bGVfcGF0aCIpKSkpCisg ICAgICAgICAgICAgICA7OyBXZSBuZWVkIHRvIHJlbW92ZSB0aGUgaW5zdGFsbCBzY3JpcHQgZnJv bSAicGFja2FnZS5qc29uIiwKKyAgICAgICAgICAgICAgIDs7IGFzIGl0IHdvdWxkIHRyeSB0byB1 c2Ugbm9kZS1wcmUtZ3lwIGFuZCB3b3VsZCBibG9jayB0aGUKKyAgICAgICAgICAgICAgIDs7IGF1 dG9tYXRpYyBidWlsZGluZyBwZXJmb3JtZWQgYnkgYG5wbSBpbnN0YWxsYC4KKyAgICAgICAgICAg ICAgIChtYXAKKyAgICAgICAgICAgICAgICAgKG1hdGNoLWxhbWJkYQorICAgICAgICAgICAgICAg ICAgICgoInNjcmlwdHMiIC4gc2NyaXB0cy1hbGlzdCkKKyAgICAgICAgICAgICAgICAgICAgIChj b25zICJzY3JpcHRzIiAoZmlsdGVyCisgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaC1sYW1i ZGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCJpbnN0YWxsIiAuIF8pICNmKQorICAgICAg ICAgICAgICAgICAgICAgICAgIChfICN0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0 cy1hbGlzdCkpKQorICAgICAgICAgICAgICAgICAgIChvdGhlciBvdGhlcikpCisgICAgICAgICAg ICAgICAgIHBrZy1tZXRhLWFsaXN0KSkpKSkpKSkKICAgICAoaG9tZS1wYWdlICJodHRwczovL2dp dGh1Yi5jb20vbWFwYm94L25vZGUtc3FsaXRlMyIpCiAgICAgKHN5bm9wc2lzICJOb2RlLmpzIGJp bmRpbmdzIGZvciBTUUxpdGUzIikKICAgICAoZGVzY3JpcHRpb24KZGlmZiAtLWdpdCBhL2d1aXgv YnVpbGQtc3lzdGVtL25vZGUuc2NtIGIvZ3VpeC9idWlsZC1zeXN0ZW0vbm9kZS5zY20KaW5kZXgg NTdmZTVmNjAzMC4uNDI1YjhjZDliMyAxMDA2NDQKLS0tIGEvZ3VpeC9idWlsZC1zeXN0ZW0vbm9k ZS5zY20KKysrIGIvZ3VpeC9idWlsZC1zeXN0ZW0vbm9kZS5zY20KQEAgLTQsNiArNCw3IEBACiA7 OzsgQ29weXJpZ2h0IMKpIDIwMjEgTHVkb3ZpYyBDb3VydMOocyA8bHVkb0BnbnUub3JnPgogOzs7 IENvcHlyaWdodCDCqSAyMDIxIFBpZXJyZSBMYW5nbG9pcyA8cGllcnJlLmxhbmdsb2lzQGdteC5j b20+CiA7OzsgQ29weXJpZ2h0IMKpIDIwMjEgUGhpbGlwIE1jR3JhdGggPHBoaWxpcEBwaGlsaXBt Y2dyYXRoLmNvbT4KKzs7OyBDb3B5cmlnaHQgwqkgMjAyNCBEYW5pZWwgS2hvZGFiYWtoc2ggPGQu a2hvZGFiYWtoc2hAZ21haWwuY29tPgogOzs7CiA7OzsgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05V IEd1aXguCiA7OzsKQEAgLTM2LDcgKzM3LDEwIEBAIChkZWZpbmUtbW9kdWxlIChndWl4IGJ1aWxk LXN5c3RlbSBub2RlKQogKGRlZmluZSAlbm9kZS1idWlsZC1zeXN0ZW0tbW9kdWxlcwogICA7OyBC dWlsZC1zaWRlIG1vZHVsZXMgaW1wb3J0ZWQgYnkgZGVmYXVsdC4KICAgYCgoZ3VpeCBidWlsZCBu b2RlLWJ1aWxkLXN5c3RlbSkKLSAgICAoZ3VpeCBidWlsZCBqc29uKQorICAgIChqc29uKQorICAg IChqc29uIGJ1aWxkZXIpCisgICAgKGpzb24gcGFyc2VyKQorICAgIChqc29uIHJlY29yZCkKICAg ICAsQCVkZWZhdWx0LWdudS1pbXBvcnRlZC1tb2R1bGVzKSkKIAogKGRlZmluZSAoZGVmYXVsdC1u b2RlKQpkaWZmIC0tZ2l0IGEvZ3VpeC9idWlsZC9ub2RlLWJ1aWxkLXN5c3RlbS5zY20gYi9ndWl4 L2J1aWxkL25vZGUtYnVpbGQtc3lzdGVtLnNjbQppbmRleCBmYjIzODk0YmMxLi5kZjdlYTc3NzRj IDEwMDY0NAotLS0gYS9ndWl4L2J1aWxkL25vZGUtYnVpbGQtc3lzdGVtLnNjbQorKysgYi9ndWl4 L2J1aWxkL25vZGUtYnVpbGQtc3lzdGVtLnNjbQpAQCAtNCw2ICs0LDcgQEAKIDs7OyBDb3B5cmln aHQgwqkgMjAxOSwgMjAyMSBUaW1vdGh5IFNhbXBsZSA8c2FtcGxldEBuZ3lyby5jb20+CiA7Ozsg Q29weXJpZ2h0IMKpIDIwMjEsIDIwMjIgUGhpbGlwIE1jR3JhdGggPHBoaWxpcEBwaGlsaXBtY2dy YXRoLmNvbT4KIDs7OyBDb3B5cmlnaHQgwqkgMjAyMiBMaWxpYW5hIE1hcmllIFByaWtsZXIgPGxp bGlhbmEucHJpa2xlckBnbWFpbC5jb20+Cis7OzsgQ29weXJpZ2h0IMKpIDIwMjQgRGFuaWVsIEto b2RhYmFraHNoIDxkLmtob2RhYmFraHNoQGdtYWlsLmNvbT4KIDs7OwogOzs7IFRoaXMgZmlsZSBp cyBwYXJ0IG9mIEdOVSBHdWl4LgogOzs7CkBAIC0yMywxMCArMjQsMTAgQEAKIChkZWZpbmUtbW9k dWxlIChndWl4IGJ1aWxkIG5vZGUtYnVpbGQtc3lzdGVtKQogICAjOnVzZS1tb2R1bGUgKChndWl4 IGJ1aWxkIGdudS1idWlsZC1zeXN0ZW0pICM6cHJlZml4IGdudTopCiAgICM6dXNlLW1vZHVsZSAo Z3VpeCBidWlsZCB1dGlscykKLSAgIzp1c2UtbW9kdWxlIChndWl4IGJ1aWxkIGpzb24pCiAgICM6 dXNlLW1vZHVsZSAoaWNlLTkgZnR3KQogICAjOnVzZS1tb2R1bGUgKGljZS05IHJlZ2V4KQogICAj OnVzZS1tb2R1bGUgKGljZS05IG1hdGNoKQorICAjOnVzZS1tb2R1bGUgKGpzb24pCiAgICM6dXNl LW1vZHVsZSAoc3JmaSBzcmZpLTEpCiAgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTcxKQogICAj OmV4cG9ydCAoJXN0YW5kYXJkLXBoYXNlcwpAQCAtMzQsMTMgKzM1LDE0IEBAIChkZWZpbmUtbW9k dWxlIChndWl4IGJ1aWxkIG5vZGUtYnVpbGQtc3lzdGVtKQogICAgICAgICAgICAgZGVsZXRlLWRl cGVuZGVuY2llcwogICAgICAgICAgICAgbm9kZS1idWlsZCkpCiAKLShkZWZpbmUgKHdpdGgtYXRv bWljLWpzb24tZmlsZS1yZXBsYWNlbWVudCBmaWxlIHByb2MpCisoZGVmaW5lKiAod2l0aC1hdG9t aWMtanNvbi1maWxlLXJlcGxhY2VtZW50IHByb2MKKyAgIzpvcHRpb25hbCAoZmlsZSAicGFja2Fn ZS5qc29uIikpCiAgICJMaWtlICd3aXRoLWF0b21pYy1maWxlLXJlcGxhY2VtZW50JywgYnV0IFBS T0MgaXMgY2FsbGVkIHdpdGggYSBzaW5nbGUKIGFyZ3VtZW50LS0tdGhlIHJlc3VsdCBvZiBwYXJz aW5nIEZJTEUncyBjb250ZW50cyBhcyBqc29uLS0tYW5kIHNob3VsZCBhIHZhbHVlCiB0byBiZSB3 cml0dGVuIGFzIGpzb24gdG8gdGhlIHJlcGxhY2VtZW50IEZJTEUuIgogICAod2l0aC1hdG9taWMt ZmlsZS1yZXBsYWNlbWVudCBmaWxlCiAgICAgKGxhbWJkYSAoaW4gb3V0KQotICAgICAgKHdyaXRl LWpzb24gKHByb2MgKHJlYWQtanNvbiBpbikpIG91dCkpKSkKKyAgICAgIChzY20tPmpzb24gKHBy b2MgKGpzb24tPnNjbSBpbikpIG91dCkpKSkKIAogKGRlZmluZSogKGFzc29jLXJlZiogYWxpc3Qg a2V5ICM6b3B0aW9uYWwgZGVmYXVsdCkKICAgIkxpa2UgYXNzb2MtcmVmLCBidXQgcmV0dXJuIERF RkFVTFQgaW5zdGVhZCBvZiAjZiBpZiBubyB2YWx1ZSBleGlzdHMuIgpAQCAtNDgsMTAgKzUwLDYg QEAgKGRlZmluZSogKGFzc29jLXJlZiogYWxpc3Qga2V5ICM6b3B0aW9uYWwgZGVmYXVsdCkKICAg ICAoI2YgZGVmYXVsdCkKICAgICAoKF8gLiB2YWx1ZSkgdmFsdWUpKSkKIAotKGRlZmluZSogKGpz b2JqZWN0LXJlZiBvYmoga2V5ICM6b3B0aW9uYWwgZGVmYXVsdCkKLSAgKG1hdGNoIG9iagotICAg ICgoJ0AgLiBhbGlzdCkgKGFzc29jLXJlZiogYWxpc3Qga2V5IGRlZmF1bHQpKSkpCi0KIChkZWZp bmUqIChhbGlzdC1wb3AgYWxpc3Qga2V5ICM6b3B0aW9uYWwgKD0gZXF1YWw/KSkKICAgIlJldHVy biB0d28gdmFsdWVzLCB0aGUgZmlyc3QgcGFpciBpbiBBTElTVCB3aXRoIGtleSBLRVksIGFuZCB0 aGUgb3RoZXIKIGVsZW1lbnRzLiAgRXF1YWxpdHkgY2FsbHMgYXJlIG1hZGUgYXMgKD0gS0VZIEFM SVNUQ0FSKS4iCkBAIC02Myw2NyArNjEsMTcgQEAgKGRlZmluZSogKGFsaXN0LXBvcCBhbGlzdCBr ZXkgIzpvcHRpb25hbCAoPSBlcXVhbD8pKQogICAgICAgICAodmFsdWVzIChjYXIgYWZ0ZXIpIChh cHBlbmQgYmVmb3JlIChjZHIgYWZ0ZXIpKSkKICAgICAgICAgKHZhbHVlcyAjZiBiZWZvcmUpKSkp CiAKLShkZWZpbmUqIChhbGlzdC11cGRhdGUgYWxpc3Qga2V5IHByb2MgIzpvcHRpb25hbCBkZWZh dWx0ICg9IGVxdWFsPykpCisoZGVmaW5lKiAoYWxpc3QtdXBkYXRlIGFsaXN0IGtleSBwcm9jICM6 b3B0aW9uYWwgKD0gZXF1YWw/KSkKICAgIlJldHVybiBhbiBhc3NvY2lhdGlvbiBsaXN0IGxpa2Ug QUxJU1QsIGJ1dCB3aXRoIEtFWSBtYXBwZWQgdG8gdGhlIHJlc3VsdCBvZgogUFJPQyBhcHBsaWVk IHRvIHRoZSBmaXJzdCB2YWx1ZSBmb3VuZCB1bmRlciB0aGUgY29tcGFyaXNvbiAoPSBLRVkgQUxJ U1RDQVIpLgotSWYgbm8gc3VjaCB2YWx1ZSBleGlzdHMsIHVzZSBERUZBVUxUIGluc3RlYWQuCitJ ZiBubyBzdWNoIHZhbHVlIGV4aXN0cywgcmV0dXJuIHRoZSBsaXN0IHVuY2hhbmdlZC4KIFVubGlr ZSBhY29ucywgdGhpcyByZW1vdmVzIHRoZSBwcmV2aW91cyBhc3NvY2lhdGlvbiBvZiBLRVkgKGFz c3VtaW5nIGl0IGlzCiB1bmlxdWUpLCBidXQgdGhlIHJlc3VsdCBtYXkgc3RpbGwgc2hhcmUgc3Rv cmFnZSB3aXRoIEFMSVNULiIKICAgKGxldCAoKHBhaXIgcmVzdCAoYWxpc3QtcG9wIGFsaXN0IGtl eSA9KSkpCi0gICAgKGFjb25zIGtleQotICAgICAgICAgICAocHJvYyAoaWYgKHBhaXI/IHBhaXIp Ci0gICAgICAgICAgICAgICAgICAgICAoY2RyIHBhaXIpCi0gICAgICAgICAgICAgICAgICAgICBk ZWZhdWx0KSkKLSAgICAgICAgICAgcmVzdCkpKQotCi0oZGVmaW5lIChqc29iamVjdC11cGRhdGUq IGpzIC4gdXBkYXRlcykKLSAgIlJldHVybiBhIGpzb24gb2JqZWN0IGxpa2UgSlMsIGJ1dCB3aXRo IGFsbCBVUERBVEVTIGFwcGxpZWQuICBFYWNoIHVwZGF0ZSBpcwotYSBsaXN0IChLRVkgUFJPQyBb REVGQVVMVF0pLCBzbyB0aGF0IEtFWSBpcyBtYXBwZWQgdG8gdGhlIHJlc3VsdCBvZiBQUk9DCi1h cHBsaWVkIHRvIHRoZSB2YWx1ZSB0byB3aGljaCBLRVkgaXMgbWFwcGVkIGluIEpTLiAgSWYgbm8g c3VjaCBtYXBwaW5nIGV4aXN0cywKLVBST0MgaXMgaW5zdGVhZCBhcHBsaWVkIHRvIERFRkFVTFQs IG9yIHRvICcjZicgaXMgbm8gREVGQVVMVCBpcyBzcGVjaWZpZWQuCi1UaGUgdXBkYXRlIHRha2Vz IHBsYWNlIGZyb20gbGVmdCB0byByaWdodCwgc28gbGF0ZXIgVVBEQVRFUnMgd2lsbCByZWNlaXZl IHRoZQotdmFsdWVzIHJldHVybmVkIGJ5IGVhcmxpZXIgVVBEQVRFUnMgZm9yIHRoZSBzYW1lIEtF WS4iCi0gIChtYXRjaCBqcwotICAgICgoJ0AgLiBhbGlzdCkKLSAgICAgKGxldCBsb29wICgoYWxp c3QgYWxpc3QpCi0gICAgICAgICAgICAgICAgKHVwZGF0ZXMgdXBkYXRlcykpCi0gICAgICAgKG1h dGNoIHVwZGF0ZXMKLSAgICAgICAgICgoKSAoY29ucyAnQCBhbGlzdCkpCi0gICAgICAgICAoKChr ZXkgcHJvYykgLiB1cGRhdGVzKQotICAgICAgICAgIChsb29wIChhbGlzdC11cGRhdGUgYWxpc3Qg a2V5IHByb2MgI2YgZXF1YWw/KSB1cGRhdGVzKSkKLSAgICAgICAgICgoKGtleSBwcm9jIGRlZmF1 bHQpIC4gdXBkYXRlcykKLSAgICAgICAgICAobG9vcCAoYWxpc3QtdXBkYXRlIGFsaXN0IGtleSBw cm9jIGRlZmF1bHQgZXF1YWw/KSB1cGRhdGVzKSkpKSkpKQotCi0oZGVmaW5lIChqc29iamVjdC11 bmlvbiBjb21iaW5lIHNlZWQgLiBvYmplY3RzKQotICAiTWVyZ2UgT0JKRUNUUyBpbnRvIFNFRUQg YnkgYXBwbHlpbmcgKENPTUJJTkUgS0VZIFZBTDAgVkFMKSwgd2hlcmUgVkFMMAotaXMgdGhlIHZh bHVlIGZvdW5kIGluIHRoZSAocG9zc2libHkgdXBkYXRlZCkgU0VFRCBhbmQgVkFMIGlzIHRoZSBu ZXcgdmFsdWUKLWZvdW5kIGluIG9uZSBvZiB0aGUgT0JKRUNUUy4iCi0gIChtYXRjaCBzZWVkCi0g ICAgKCgnQCAuIGFzZWVkKQotICAgICAobWF0Y2ggb2JqZWN0cwotICAgICAgICgoKSBzZWVkKQot ICAgICAgICgoKCdAIC4gYWxpc3RzKSAuLi4pCi0gICAgICAgIChjb25zCi0gICAgICAgICAnQAot ICAgICAgICAgKGZvbGQgKGxhbWJkYSAoYWxpc3QgYXNlZWQpCi0gICAgICAgICAgICAgICAgIChp ZiAobnVsbD8gYXNlZWQpIGFsaXN0Ci0gICAgICAgICAgICAgICAgICAgICAoZm9sZAotICAgICAg ICAgICAgICAgICAgICAgIChtYXRjaC1sYW1iZGEqCi0gICAgICAgICAgICAgICAgICAgICAgICAo KChrIC4gdikgYXNlZWQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKHBhaXIgdGFp bCAoYWxpc3QtcG9wIGFsaXN0IGspKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRj aCBwYWlyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgjZiAoYWNvbnMgayB2IGFzZWVk KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfIC4gdjApIChhY29ucyBrIChjb21i aW5lIGsgdjAgdikgYXNlZWQpKSkpKSkKLSAgICAgICAgICAgICAgICAgICAgICBhc2VlZAotICAg ICAgICAgICAgICAgICAgICAgIGFsaXN0KSkpCi0gICAgICAgICAgICAgICBhc2VlZAotICAgICAg ICAgICAgICAgYWxpc3RzKSkpKSkpKQorICAgIChpZiAocGFpcj8gcGFpcikKKyAgICAgIChhY29u cyBrZXkgKHByb2MgKGNkciBwYWlyKSkgcmVzdCkKKyAgICAgIGFsaXN0KSkpCiAKLTs7IFBvc3Np Ymx5IHVzZWZ1bCBoZWxwZXIgZnVuY3Rpb25zOgotOzsgKGRlZmluZSAobmV3ZXN0IGtleSB2YWww IHZhbCkgdmFsKQotOzsgKGRlZmluZSAodW5rZXllZC0+a2V5ZWQgcHJvYykgKGxhbWJkYSAoX2tl eSB2YWwwIHZhbCkgKHByb2MgdmFsMCB2YWwpKSkKLQotDAogOzs7CiA7OzsgUGhhc2VzLgogOzs7 CkBAIC0xNDIsOCArOTAsOCBAQCAoZGVmaW5lIChzZXQtaG9tZSAuIF8pCiAKIChkZWZpbmUgKG1v ZHVsZS1uYW1lIG1vZHVsZSkKICAgKGxldCogKChwYWNrYWdlLmpzb24gKHN0cmluZy1hcHBlbmQg bW9kdWxlICIvcGFja2FnZS5qc29uIikpCi0gICAgICAgICAocGFja2FnZS1tZXRhIChjYWxsLXdp dGgtaW5wdXQtZmlsZSBwYWNrYWdlLmpzb24gcmVhZC1qc29uKSkpCi0gICAgKGpzb2JqZWN0LXJl ZiBwYWNrYWdlLW1ldGEgIm5hbWUiKSkpCisgICAgICAgICAocGFja2FnZS1tZXRhIChjYWxsLXdp dGgtaW5wdXQtZmlsZSBwYWNrYWdlLmpzb24ganNvbi0+c2NtKSkpCisgICAgKGFzc29jLXJlZiBw YWNrYWdlLW1ldGEgIm5hbWUiKSkpCiAKIChkZWZpbmUgKGluZGV4LW1vZHVsZXMgaW5wdXQtcGF0 aHMpCiAgIChkZWZpbmUgKGxpc3QtbW9kdWxlcyBkaXJlY3RvcnkpCkBAIC0xNjcsNDkgKzExNSw1 OSBAQCAoZGVmaW5lKiAocGF0Y2gtZGVwZW5kZW5jaWVzICM6a2V5IGlucHV0cyAjOmFsbG93LW90 aGVyLWtleXMpCiAKICAgKGRlZmluZSBpbmRleCAoaW5kZXgtbW9kdWxlcyAobWFwIGNkciBpbnB1 dHMpKSkKIAotICAoZGVmaW5lIHJlc29sdmUtZGVwZW5kZW5jaWVzCi0gICAgKG1hdGNoLWxhbWJk YQotICAgICAgKCgnQCAuIGFsaXN0KQotICAgICAgIChjb25zICdAIChtYXAgKG1hdGNoLWxhbWJk YQotICAgICAgICAgICAgICAgICAgICAgICAoKGtleSAuIHZhbHVlKQotICAgICAgICAgICAgICAg ICAgICAgICAgKGNvbnMga2V5IChoYXNoLXJlZiBpbmRleCBrZXkgdmFsdWUpKSkpCi0gICAgICAg ICAgICAgICAgICAgICBhbGlzdCkpKSkpCisgIChkZWZpbmUgKHJlc29sdmUtZGVwZW5kZW5jaWVz IGRlcGVuZGVuY2llcykKKyAgICAobWFwCisgICAgICAobWF0Y2gtbGFtYmRhCisgICAgICAgICgo ZGVwZW5kZW5jeSAuIHZlcnNpb24pCisgICAgICAgICAgKGNvbnMgZGVwZW5kZW5jeSAoaGFzaC1y ZWYgaW5kZXggZGVwZW5kZW5jeSB2ZXJzaW9uKSkpKQorICAgICAgZGVwZW5kZW5jaWVzKSkKIAot ICAod2l0aC1hdG9taWMtanNvbi1maWxlLXJlcGxhY2VtZW50ICJwYWNrYWdlLmpzb24iCisgICh3 aXRoLWF0b21pYy1qc29uLWZpbGUtcmVwbGFjZW1lbnQKICAgICAobGFtYmRhIChwa2ctbWV0YSkK LSAgICAgIChqc29iamVjdC11cGRhdGUqCi0gICAgICAgcGtnLW1ldGEKLSAgICAgICBgKCJkZXZE ZXBlbmRlbmNpZXMiICxyZXNvbHZlLWRlcGVuZGVuY2llcyAoQCkpCi0gICAgICAgYCgiZGVwZW5k ZW5jaWVzIiAsKGxhbWJkYSAoZGVwcykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXNv bHZlLWRlcGVuZGVuY2llcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChqc29iamVjdC11 bmlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChrIGEgYikgYikKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGpzb2JqZWN0LXJlZiBwa2ctbWV0YSAicGVlckRl cGVuZGVuY2llcyIgJyhAKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwcykpKQot ICAgICAgICAgKEApKSkpKQorICAgICAgKGZvbGQKKyAgICAgICAgKGxhbWJkYSAocHJvYyBwa2ct bWV0YSkgKHByb2MgcGtnLW1ldGEpKQorICAgICAgICBwa2ctbWV0YQorICAgICAgICAobGlzdAor ICAgICAgICAgIChsYW1iZGEgKHBrZy1tZXRhKQorICAgICAgICAgICAgKGFsaXN0LXVwZGF0ZSBw a2ctbWV0YSAiZGV2RGVwZW5kZW5jaWVzIiByZXNvbHZlLWRlcGVuZGVuY2llcykpCisgICAgICAg ICAgKGxhbWJkYSAocGtnLW1ldGEpCisgICAgICAgICAgICAoYXNzb2Mtc2V0IQorICAgICAgICAg ICAgICBwa2ctbWV0YQorICAgICAgICAgICAgICAiZGVwZW5kZW5jaWVzIgorICAgICAgICAgICAg ICAocmVzb2x2ZS1kZXBlbmRlbmNpZXMKKyAgICAgICAgICAgICAgICA7IENvbWJpbmVkICJwZWVy RGVwZW5kZW5jaWVzIiBhbmQgImRlcGVuZGVuY2llcyIgZGVwZW5kZW5jaWVzCisgICAgICAgICAg ICAgICAgOyB3aXRoICJkZXBlbmRlbmNpZXMiIHRha2luZyBwcmVjZWRlbnQuCisgICAgICAgICAg ICAgICAgKGZvbGQKKyAgICAgICAgICAgICAgICAgIChsYW1iZGEgKGRlcGVuZGVuY3kgZGVwZW5k ZW5jaWVzKQorICAgICAgICAgICAgICAgICAgICAoYXNzb2Mtc2V0ISBkZXBlbmRlbmNpZXMgKGNh ciBkZXBlbmRlbmN5KSAoY2RyIGRlcGVuZGVuY3kpKSkKKyAgICAgICAgICAgICAgICAgIChhc3Nv Yy1yZWYqIHBrZy1tZXRhICJwZWVyRGVwZW5kZW5jaWVzIiAnKCkpCisgICAgICAgICAgICAgICAg ICAoYXNzb2MtcmVmKiBwa2ctbWV0YSAiZGVwZW5kZW5jaWVzIiAnKCkpKSkpKSkpKSkKICAgI3Qp CiAKLShkZWZpbmUgKGRlbGV0ZS1kZXBlbmRlbmNpZXMgYWJzZW50KQorKGRlZmluZSAoZGVsZXRl LWRlcGVuZGVuY2llcyBkZXBlbmRlbmNpZXMtdG8tcmVtb3ZlKQogICAiUmV3cml0ZSAncGFja2Fn ZS5qc29uJyB0byBhbGxvdyB0aGUgYnVpbGQgdG8gcHJvY2VlZCB3aXRob3V0IHBhY2thZ2VzCi1s aXN0ZWQgaW4gQUJTRU5ULCBhIGxpc3Qgb2Ygc3RyaW5ncyBuYW1pbmcgbnBtIHBhY2thZ2VzLgor bGlzdGVkIGluICdkZXBlbmRlbmNpZXMtdG8tcmVtb3ZlJywgYSBsaXN0IG9mIHN0cmluZ3MgbmFt aW5nIG5wbSBwYWNrYWdlcy4KIAogVG8gcHJldmVudCB0aGUgZGVsZXRlZCBkZXBlbmRlbmNpZXMg ZnJvbSBiZWluZyByZWludHJvZHVjZWQsIHVzZSB0aGlzIGZ1bmN0aW9uCiBvbmx5IGFmdGVyIHRo ZSAncGF0Y2gtZGVwZW5kZW5jaWVzJyBwaGFzZS4iCi0gIChkZWZpbmUgZGVsZXRlLWZyb20tanNv YmplY3QKLSAgICAobWF0Y2gtbGFtYmRhCi0gICAgICAoKCdAIC4gYWxpc3QpCi0gICAgICAgKGNv bnMgJ0AgKGZpbHRlciAobWF0Y2gtbGFtYmRhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICgo ayAuIF8pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAobm90IChtZW1iZXIgayBhYnNlbnQp KSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBhbGlzdCkpKSkpCi0KLSAgKHdpdGgtYXRvbWlj LWpzb24tZmlsZS1yZXBsYWNlbWVudCAicGFja2FnZS5qc29uIgorICAod2l0aC1hdG9taWMtanNv bi1maWxlLXJlcGxhY2VtZW50CiAgICAgKGxhbWJkYSAocGtnLW1ldGEpCi0gICAgICAoanNvYmpl Y3QtdXBkYXRlKgotICAgICAgIHBrZy1tZXRhCi0gICAgICAgYCgiZGV2RGVwZW5kZW5jaWVzIiAs ZGVsZXRlLWZyb20tanNvYmplY3QgKEApKQotICAgICAgIGAoImRlcGVuZGVuY2llcyIgLGRlbGV0 ZS1mcm9tLWpzb2JqZWN0IChAKSkKLSAgICAgICBgKCJwZWVyRGVwZW5kZW5jaWVzIiAsZGVsZXRl LWZyb20tanNvYmplY3QgKEApKSkpKSkKKyAgICAgIChmb2xkCisgICAgICAgIChsYW1iZGEgKGRl cGVuZGVuY3kta2V5IHBrZy1tZXRhKQorICAgICAgICAgIChhbGlzdC11cGRhdGUKKyAgICAgICAg ICAgIHBrZy1tZXRhCisgICAgICAgICAgICBkZXBlbmRlbmN5LWtleQorICAgICAgICAgICAgKGxh bWJkYSAoZGVwZW5kZW5jaWVzKQorICAgICAgICAgICAgICAocmVtb3ZlCisgICAgICAgICAgICAg ICAgKGxhbWJkYSAoZGVwZW5kZW5jeSkKKyAgICAgICAgICAgICAgICAgIChtZW1iZXIgKGNhciBk ZXBlbmRlbmN5KSBkZXBlbmRlbmNpZXMtdG8tcmVtb3ZlKSkKKyAgICAgICAgICAgICAgICBkZXBl bmRlbmNpZXMpKSkpCisgICAgICAgIHBrZy1tZXRhCisgICAgICAgIChsaXN0CisgICAgICAgICAg ImRldkRlcGVuZGVuY2llcyIKKyAgICAgICAgICAiZGVwZW5kZW5jaWVzIgorICAgICAgICAgICJw ZWVyRGVwZW5kZW5jaWVzIgorICAgICAgICAgICJvcHRpb25hbERlcGVuZGVuY2llcyIpKSkpKQog CiAoZGVmaW5lKiAoZGVsZXRlLWxvY2tmaWxlcyAjOmtleSBpbnB1dHMgIzphbGxvdy1vdGhlci1r ZXlzKQogICAiRGVsZXRlICdwYWNrYWdlLWxvY2suanNvbicsICd5YXJuLmxvY2snLCBhbmQgJ25w bS1zaHJpbmt3cmFwLmpzb24nLCBpZiB0aGV5CkBAIC0yMjgsOCArMTg2LDggQEAgKGRlZmluZSog KGNvbmZpZ3VyZSAjOmtleSBvdXRwdXRzIGlucHV0cyAjOmFsbG93LW90aGVyLWtleXMpCiAgICAg I3QpKQogCiAoZGVmaW5lKiAoYnVpbGQgIzprZXkgaW5wdXRzICM6YWxsb3ctb3RoZXIta2V5cykK LSAgKGxldCAoKHBhY2thZ2UtbWV0YSAoY2FsbC13aXRoLWlucHV0LWZpbGUgInBhY2thZ2UuanNv biIgcmVhZC1qc29uKSkpCi0gICAgKGlmIChqc29iamVjdC1yZWYgKGpzb2JqZWN0LXJlZiBwYWNr YWdlLW1ldGEgInNjcmlwdHMiICcoQCkpICJidWlsZCIgI2YpCisgIChsZXQgKChwYWNrYWdlLW1l dGEgKGNhbGwtd2l0aC1pbnB1dC1maWxlICJwYWNrYWdlLmpzb24iIGpzb24tPnNjbSkpKQorICAg IChpZiAoYXNzb2MtcmVmKiAoYXNzb2MtcmVmKiBwYWNrYWdlLW1ldGEgInNjcmlwdHMiICcoKSkg ImJ1aWxkIiAjZikKICAgICAgICAgKGxldCAoKG5wbSAoc3RyaW5nLWFwcGVuZCAoYXNzb2MtcmVm IGlucHV0cyAibm9kZSIpICIvYmluL25wbSIpKSkKICAgICAgICAgICAoaW52b2tlIG5wbSAicnVu IiAiYnVpbGQiKSkKICAgICAgICAgKGZvcm1hdCAjdCAidGhlcmUgaXMgbm8gYnVpbGQgc2NyaXB0 IHRvIHJ1bn4lIikpCkBAIC0zMDEsMjIgKzI1OSwyMCBAQCAoZGVmaW5lKiAoYXZvaWQtbm9kZS1n eXAtcmVidWlsZCAjOmtleSBvdXRwdXRzICM6YWxsb3ctb3RoZXIta2V5cykKICAgOzsgZXZlbiBu ZWVkIHRvIG92ZXJ3cml0ZSB0aGlzIGZpbGUuICBUaGVyZWZvcmUsIGxldCdzIHVzZSBzb21lIGhl bHBlcnMKICAgOzsgdGhhdCB3ZSdkIG90aGVyd2lzZSBub3QgbmVlZC4KICAgKGRlZmluZSBwa2ct bWV0YQotICAgIChjYWxsLXdpdGgtaW5wdXQtZmlsZSBpbnN0YWxsZWQtcGFja2FnZS5qc29uIHJl YWQtanNvbikpCisgICAgKGNhbGwtd2l0aC1pbnB1dC1maWxlIGluc3RhbGxlZC1wYWNrYWdlLmpz b24ganNvbi0+c2NtKSkKICAgKGRlZmluZSBzY3JpcHRzCi0gICAgKGpzb2JqZWN0LXJlZiBwa2ct bWV0YSAic2NyaXB0cyIgJyhAKSkpCi0gIChkZWZpbmUgKGpzb2JqZWN0LXNldCBqcyBrZXkgdmFs KQotICAgIChqc29iamVjdC11cGRhdGUqIGpzIChsaXN0IGtleSAoY29uc3QgdmFsKSkpKQorICAg IChhc3NvYy1yZWYqIHBrZy1tZXRhICJzY3JpcHRzIiAnKCkpKQogCi0gICh3aGVuIChlcXVhbD8g Im5vZGUtZ3lwIHJlYnVpbGQiIChqc29iamVjdC1yZWYgc2NyaXB0cyAiaW5zdGFsbCIgI2YpKQor ICAod2hlbiAoZXF1YWw/ICJub2RlLWd5cCByZWJ1aWxkIiAoYXNzb2MtcmVmKiBzY3JpcHRzICJp bnN0YWxsIiAjZikpCiAgICAgKGNhbGwtd2l0aC1vdXRwdXQtZmlsZSBpbnN0YWxsZWQtcGFja2Fn ZS5qc29uCiAgICAgICAobGFtYmRhIChvdXQpCi0gICAgICAgICh3cml0ZS1qc29uCi0gICAgICAg ICAoanNvYmplY3Qtc2V0IHBrZy1tZXRhCi0gICAgICAgICAgICAgICAgICAgICAgICJzY3JpcHRz IgotICAgICAgICAgICAgICAgICAgICAgICAoanNvYmplY3Qtc2V0IHNjcmlwdHMKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5zdGFsbCIKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiZWNobyBHdWl4OiBhdm9pZGluZyBub2RlLWd5cCByZWJ1aWxk IikpCi0gICAgICAgICBvdXQpKSkpKQorICAgICAgICAoc2NtLT5qc29uCisgICAgICAgICAgKGFz c29jLXNldCEgcGtnLW1ldGEKKyAgICAgICAgICAgICAgICAgICAgICAic2NyaXB0cyIKKyAgICAg ICAgICAgICAgICAgICAgICAoYXNzb2Mtc2V0ISBzY3JpcHRzCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgImluc3RhbGwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgImVjaG8gR3VpeDogYXZvaWRpbmcgbm9kZS1neXAgcmVidWlsZCIpKQorICAgICAgICAgIG91 dCkpKSkpCiAKIChkZWZpbmUgJXN0YW5kYXJkLXBoYXNlcwogICAobW9kaWZ5LXBoYXNlcyBnbnU6 JXN0YW5kYXJkLXBoYXNlcwoKYmFzZS1jb21taXQ6IGUxNmNkY2YzN2Q4MjIzYjM2MzRlYzVlNjU4 MzU2YzNiN2YxNTQ4NTkKLS0gCjIuNDYuMAoK --0000000000009d1a6f062a593214--
guix-patches@HIDDEN
:bug#74900
; Package guix-patches
.
Full text available.Received: (at 74900) by debbugs.gnu.org; 28 Dec 2024 00:00:06 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Dec 27 19:00:06 2024 Received: from localhost ([127.0.0.1]:48023 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tRKFR-00083T-L2 for submit <at> debbugs.gnu.org; Fri, 27 Dec 2024 19:00:06 -0500 Received: from mail-vs1-f46.google.com ([209.85.217.46]:49169) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <d.khodabakhsh@HIDDEN>) id 1tRKFP-000823-CY for 74900 <at> debbugs.gnu.org; Fri, 27 Dec 2024 19:00:04 -0500 Received: by mail-vs1-f46.google.com with SMTP id ada2fe7eead31-4afdfd3124dso2040680137.2 for <74900 <at> debbugs.gnu.org>; Fri, 27 Dec 2024 16:00:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1735343942; x=1735948742; darn=debbugs.gnu.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=Ezl48l5j5k+UTOeG9S0zqCEIS031B5W7eqMeRqFEAVg=; b=lwAlkH0Y3AM4LoNZnbg5wRs6C0iCJklCCg0D10DlRgQ3OaVNCBeN0RPpieIh/IKW9U qQs8ovnJYcnLlLBukj8MYDb0OGVBll0Vz5pn5/U03b8FGxuTKChzHFiBnn5cro8O/1bj 3RpUrXMeSXAC5GVKwbMTOb46jwnw/5aEd4mMiLJRZmRyEIotYjsy2fMBYlbVLRx+Z59j LmpQgFOZqYcX+hp2eU1tuCKYI+DHeq1iBLG3TTSxCUXEcklo2IL6HTRg0V+8mFy13Mog OctKb9l+xzJE6TU1+7dobtVYhhctbt2SBTrR13wtfhc+4rrFy5aVx28SHr2S86WTYsqs zW4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1735343942; x=1735948742; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Ezl48l5j5k+UTOeG9S0zqCEIS031B5W7eqMeRqFEAVg=; b=YefJA6N5JTZi3AaL21ORVFLhESiOx8zHEGV2GQfwhIR34k2WjV8GZbNBcYsAl8/Nrh 8za3wGLcxhwtMpsoKal9WJjkokS3yafQ1Zmq7ntNtKoyF1n1qauq8vPq446mZ//V23xh OJ3v8vXp39dAj5n+m6lpnJEy1Oadp55ZwGqsOxS5KMZCJa+IiUwC7n2CDm71sti0etEB he9JUsQoJODmiTumC22ZHxhLwgGOhgDoCOsT73JeEV1YY/J9DFHQKZwlEOou7SzeEcxA Jty8Qe2AS/aeGfQLVvnVcZD2nBKW9rJ0I4rGF70RY5YtSI96Dkc7Cat2CBdCQcUDZvq4 0VFg== X-Gm-Message-State: AOJu0Yxg5d6x+F9bSNyKE+MN4XbAzxCaLlHD7kIYvOz5IO8ARI+Ryfa0 +CqFzcWYYpAbWi5aWt9fABiIE01ECPhP9SDkvCKzc06LyKfqn4Y6BmzjgwZr/LiyRUwdqoFaT7Z OpQFYLHy+9ELo0AQBbUi/BsNTAltTGFg8 X-Gm-Gg: ASbGncvIeHnxRdmFwujVhwoqo+LLUyIe0J3LfIeQyvKlTZatHxSJUBtYeQ7qryIDrkT rCnVKLHqIBk/8jDbxrjlaKVnyQu3ZcpndiIIbGZGy X-Google-Smtp-Source: AGHT+IFV0bs+Zs3YSZktTm5aYF/64NJll5iWsiKTp/JX4dcFyKXrosz9DlifU5Q49WBjnmo00sMCldIauGi1HfyAL7M= X-Received: by 2002:a05:6102:3751:b0:4b2:c391:7d10 with SMTP id ada2fe7eead31-4b2cc31e2damr25848548137.3.1735343942369; Fri, 27 Dec 2024 15:59:02 -0800 (PST) MIME-Version: 1.0 References: <CAADuFn++tHWy7CAzNv4TP3FCF4AGwMPeq1MDBGeH11Q9zcDxAw@HIDDEN> <CAADuFnKcD0wxAZfg7cBPV1eWG9NW3Tm=nOHtd6Rcd9wfSqpsuA@HIDDEN> In-Reply-To: <CAADuFnKcD0wxAZfg7cBPV1eWG9NW3Tm=nOHtd6Rcd9wfSqpsuA@HIDDEN> From: Daniel Khodabakhsh <d.khodabakhsh@HIDDEN> Date: Fri, 27 Dec 2024 23:58:50 +0000 Message-ID: <CAADuFnK=BCCtqfrcjx1-tDo=HziX+LtXdLz6zy6Ejy0yv30Qog@HIDDEN> Subject: Re: To: 74900 <at> debbugs.gnu.org Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 74900 X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) The rationale of this patch are the following reasons: 1. Since (json) is a dependency of guix, there's no need to roll out own (guix build json) which does the same thing. 2. (guix build json)'s write-json escapes forward slashes in strings for some reason ("/" become "\/") 3. (guix build json)'s read-json produces an awkward to use structure similar to an association list but with '@' to indicate an object, and arrays are just lists. (json)'s json->scm produces a regular guile association list for objects and uses #(...) for lists. Overall this difference leads to easier to read and maintain code as can be seen in the patch. No longer need to match '@' for example, we can use the regular association list procedures directly.
guix-patches@HIDDEN
:bug#74900
; Package guix-patches
.
Full text available.Received: (at 74900) by debbugs.gnu.org; 26 Dec 2024 13:31:51 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Dec 26 08:31:51 2024 Received: from localhost ([127.0.0.1]:40468 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tQnxt-0006Fe-EQ for submit <at> debbugs.gnu.org; Thu, 26 Dec 2024 08:31:51 -0500 Received: from mail-ua1-f42.google.com ([209.85.222.42]:49540) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <d.khodabakhsh@HIDDEN>) id 1tQnxp-0006FO-Aj for 74900 <at> debbugs.gnu.org; Thu, 26 Dec 2024 08:31:48 -0500 Received: by mail-ua1-f42.google.com with SMTP id a1e0cc1a2514c-85c4c9349b3so1363185241.3 for <74900 <at> debbugs.gnu.org>; Thu, 26 Dec 2024 05:31:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1735219839; x=1735824639; darn=debbugs.gnu.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=eEgsw1P3Eos7UECBw899z0yKR+fx0WEmIZgd8qG6glU=; b=N49lwEOlDNwLCiL3liix7as6hKYsi24ph/cwzgLOELQMIIhDG3KzmZ+FU39DmovkFs 2qwvbwlbgfio1myJMdwbvlO5sZUO1ZNytcrF+aENh/mjsg8h6wApcWq1+vMb7X+Un9kL 9pJ67EJX4+3Fzj7YhZ0+d+/2rf/psvZ/G77ClJihSkEW/LiL9k6/fT/6nst0CENC23kc Kro66s3FQ6ghjdRnAoan2tjLxjVjUKLhqj8jdwosLmg5cJgZoixAlcwO7oW/F99kYjJh g+2ITqJOv/bbjMFAFE/kIkOFFJAby1gvKa0y7cJIq8cqiC3wweu8y81/W7Cbnmmj7BSt 7ASw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1735219839; x=1735824639; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=eEgsw1P3Eos7UECBw899z0yKR+fx0WEmIZgd8qG6glU=; b=v10sFY1C0grDp7zjQAfDPWXzP+OyhtR2xGDMvm/GfGg9pbQFnwmd4h7Y5/i36k/1ZQ mc9gQCrhw8QmoSPiRU/LOCytIgbg3sP5veYUK3RqnI3wHrK4ZkkWIDXKZg04mIjds4il AW5Der3cA4BgGM8YfFS71l3FQMeyImw301ugz8980L4Nh/qiplnMCwCkfnZo5I9bubjq 5u6z7ISdqXNAy6iC1G2hqSPb8lv4xs9GcdKOAhzqPp5qFzaNMeMWgoe/BnjDaFIJDiUl XMhVWRJndXX3vFes9jr8FXixoh1gL8MADykxJhZvtJLSJAiHu/VQWF61D+BozLzTNPP5 YAug== X-Gm-Message-State: AOJu0YzuK6RJTStx9AJfCNpKWpdYcPycVAKqiNgGGnZTbRLT0aQTnN+q R4mmqgScbDjUsgBOhAURugtZavjbG4t5OdQ8Hu+Vj4UZXBmzMAjlhV+PT67+q6OQ93+E7usfvx9 EKSW86ddc7F0VfiPUYVKq5LhDfQyFUp44 X-Gm-Gg: ASbGncvZfMKblxVYR0w7Zpl7nYaaQNoCzBLyfhXv2aQZras/zKeCCqahWy9tvoBPqJC 9/byT6Q6Md7LhtGjRg+Fvto2iq0HbQla5kL2yNvnS X-Google-Smtp-Source: AGHT+IGljGo+b20tSfv5PrNP7PVa0mUw71MEZ/iPOTpBhe350N3ofdv1LfzmqBONIMAcrHQDG+RjZ71mGG/xgpjuSa4= X-Received: by 2002:a05:6102:548a:b0:4b1:1a9d:ecbc with SMTP id ada2fe7eead31-4b2cc45723emr19872806137.20.1735219839143; Thu, 26 Dec 2024 05:30:39 -0800 (PST) MIME-Version: 1.0 References: <CAADuFn++tHWy7CAzNv4TP3FCF4AGwMPeq1MDBGeH11Q9zcDxAw@HIDDEN> In-Reply-To: <CAADuFn++tHWy7CAzNv4TP3FCF4AGwMPeq1MDBGeH11Q9zcDxAw@HIDDEN> From: Daniel Khodabakhsh <d.khodabakhsh@HIDDEN> Date: Thu, 26 Dec 2024 13:30:26 +0000 Message-ID: <CAADuFnKcD0wxAZfg7cBPV1eWG9NW3Tm=nOHtd6Rcd9wfSqpsuA@HIDDEN> Subject: Re: To: 74900 <at> debbugs.gnu.org Content-Type: multipart/mixed; boundary="0000000000001eb841062a2c5a1f" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 74900 X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) --0000000000001eb841062a2c5a1f Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Here's the patch again but with a formatting issue fixed and a fresh merge from master: From 19449feab9e31590bbd7c933b21163f8b398439b Mon Sep 17 00:00:00 2001 From: Daniel Khodabakhsh <d.khodabakhsh@HIDDEN> Date: Thu, 26 Dec 2024 04:35:39 -0800 Subject: [PATCH] Replace (guix build json) with (json) in node build system This change replaces the use of (guix build json) with (json) for the node ecosystem. Since guile-json is a dependency of Guix, and it's used elsewhere in the project, it makes sense to use this instead of rolling our own JSON implementation with (guix build json). This is one step to move away from (guix build json), there will be other changes to remove the other uses of it. Signed-off-by: Daniel Khodabakhsh <d.khodabakhsh@HIDDEN> Change-Id: I9fd5152a98b6a241d414e9a94ab179c9cabcfb85 --- gnu/packages/node-xyz.scm | 148 ++++++++++++------------- guix/build-system/node.scm | 6 +- guix/build/node-build-system.scm | 180 ++++++++++++------------------- 3 files changed, 139 insertions(+), 195 deletions(-) diff --git a/gnu/packages/node-xyz.scm b/gnu/packages/node-xyz.scm index e98eda2a01..ec3f9fbfb1 100644 --- a/gnu/packages/node-xyz.scm +++ b/gnu/packages/node-xyz.scm @@ -7,6 +7,7 @@ ;;; Copyright =C2=A9 2021 Dhruvin Gandhi <contact@HIDDEN> ;;; Copyright =C2=A9 2022 Nicolas Graves <ngraves@HIDDEN> ;;; Copyright =C2=A9 2023 Jelle Licht <jlicht@HIDDEN> +;;; Copyright =C2=A9 2024 Daniel Khodabakhsh <d.khodabakhsh@HIDDEN> ;;; ;;; This file is part of GNU Guix. ;;; @@ -24,14 +25,14 @@ ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. (define-module (gnu packages node-xyz) - #:use-module ((guix licenses) #:prefix license:) #:use-module (gnu packages sqlite) #:use-module (gnu packages python) #:use-module (gnu packages web) + #:use-module (guix build-system node) #:use-module (guix gexp) - #:use-module (guix packages) #:use-module (guix git-download) - #:use-module (guix build-system node)) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages)) ;;; ;;; Please: Try to add new module packages in alphabetic order. @@ -69,19 +70,17 @@ (define-public node-acorn ;; it would try to use the build environment and would block = the ;; automatic building by other packages making use of node-ac= orn. ;; TODO: Add utility function - (with-atomic-json-file-replacement "package.json" - (match-lambda - (('@ . pkg-meta-alist) - (cons '@ (map (match-lambda - (("scripts" @ . scripts-alist) - `("scripts" @ ,@(filter (match-lambda - (("prepare" .= _) - #f) - (_ - #t)) - scripts-alist))= ) - (other other)) - pkg-meta-alist))))))) + (with-atomic-json-file-replacement (lambda (pkg-meta-alist) + (map + (match-lambda + (("scripts" . scripts-alist) + (cons "scripts" (filter + (match-lambda + (("prepare" . _) #f) + (_ #t)) + scripts-alist))) + (other other)) + pkg-meta-alist))))) (replace 'build (lambda* (#:key inputs native-inputs #:allow-other-keys) (let ((esbuild (search-input-file (or native-inputs inputs) @@ -158,23 +157,17 @@ (define-public node-addon-api (lambda args (define new-test-script "echo stopping after pretest on Guix") - (with-atomic-json-file-replacement "package.json" - (match-lambda - (('@ . pkg-meta-alist) - (cons - '@ - (map (match-lambda - (("scripts" '@ . scripts-alist) - `("scripts" @ ,@(map (match-lambda - (("test" . _) - (cons "test" - new-test-script)) - (other - other)) - scripts-alist))) - (other - other)) - pkg-meta-alist)))))))))) + (with-atomic-json-file-replacement (lambda (pkg-meta-alist) + (map + (match-lambda + (("scripts" . scripts-alist) + (cons "scripts" (map + (match-lambda + (("test" . _) (cons "test" new-test-script)) + (other other)) + scripts-alist))) + (other other)) + pkg-meta-alist)))))))) (home-page "https://github.com/nodejs/node-addon-api") (synopsis "Node.js API (Node-API) header-only C++ wrappers") (description "This module contains header-only C++ wrapper classes whi= ch @@ -1223,22 +1216,19 @@ (define-public node-serialport-bindings "node-abi")))) (add-after 'chdir 'avoid-prebuild-install (lambda args - (with-atomic-json-file-replacement "package.json" - (match-lambda - (('@ . pkg-meta-alist) - (cons '@ (map (match-lambda - (("scripts" @ . scripts-alist) - `("scripts" @ ,@(filter (match-lambda - (("install" .= _) - #f) - (_ - #t)) - scripts-alist))= ) - (("gypfile" . _) - '("gypfile" . #f)) - (other - other)) - pkg-meta-alist)))))))) + (with-atomic-json-file-replacement (lambda (pkg-meta-alist) + (map + (match-lambda + (("scripts" . scripts-alist) + (cons "scripts" (filter + (match-lambda + (("install" . _) #f) + (_ #t)) + scripts-alist))) + (("gypfile" . _) + (cons "gypfile" #f)) + (other other)) + pkg-meta-alist)))))) #:tests? #f)) (synopsis "Abstract base class for Node SerialPort bindings") (description "Node SerialPort is a modular suite of Node.js packages f= or @@ -1524,39 +1514,33 @@ (define-public node-sqlite3 (substitute* ".npmignore" (("lib/binding") "#lib/binding # <- patched for Guix")) - (with-atomic-json-file-replacement "package.json" - (match-lambda - (('@ . pkg-meta-alist) - (match (assoc-ref pkg-meta-alist "binary") - (('@ . binary-alist) - ;; When it builds from source, node-pre-gyp supplies - ;; module_name and module_path based on the entries u= nder - ;; "binary" from "package.json", so this package's - ;; "binding.gyp" doesn't define them. Thus, we also n= eed - ;; to supply them. The GYP_DEFINES environment variab= le - ;; turns out to be the easiest way to make sure they = are - ;; propagated from npm to node-gyp to gyp. - (setenv "GYP_DEFINES" - (string-append - "module_name=3D" - (assoc-ref binary-alist "module_name") - " " - "module_path=3D" - (assoc-ref binary-alist "module_path"))))) - ;; We need to remove the install script from "package.js= on", - ;; as it would try to use node-pre-gyp and would block t= he - ;; automatic building performed by `npm install`. - (cons '@ (map (match-lambda - (("scripts" @ . scripts-alist) - `("scripts" @ ,@(filter (match-lambda - (("install" .= _) - #f) - (_ - #t)) - scripts-alist))= ) - (other - other)) - pkg-meta-alist)))))))))) + (with-atomic-json-file-replacement (lambda (pkg-meta-alist) + (let ((binary-alist (assoc-ref pkg-meta-alist "binary"))) + ;; When it builds from source, node-pre-gyp supplies + ;; module_name and module_path based on the entries under + ;; "binary" from "package.json", so this package's + ;; "binding.gyp" doesn't define them. Thus, we also need + ;; to supply them. The GYP_DEFINES environment variable + ;; turns out to be the easiest way to make sure they are + ;; propagated from npm to node-gyp to gyp. + (setenv "GYP_DEFINES" (string-append + "module_name=3D" + (assoc-ref binary-alist "module_name") + " module_path=3D" + (assoc-ref binary-alist "module_path")))) + ;; We need to remove the install script from "package.json"= , + ;; as it would try to use node-pre-gyp and would block the + ;; automatic building performed by `npm install`. + (map + (match-lambda + (("scripts" . scripts-alist) + (cons "scripts" (filter + (match-lambda + (("install" . _) #f) + (_ #t)) + scripts-alist))) + (other other)) + pkg-meta-alist)))))))) (home-page "https://github.com/mapbox/node-sqlite3") (synopsis "Node.js bindings for SQLite3") (description diff --git a/guix/build-system/node.scm b/guix/build-system/node.scm index 57fe5f6030..425b8cd9b3 100644 --- a/guix/build-system/node.scm +++ b/guix/build-system/node.scm @@ -4,6 +4,7 @@ ;;; Copyright =C2=A9 2021 Ludovic Court=C3=A8s <ludo@HIDDEN> ;;; Copyright =C2=A9 2021 Pierre Langlois <pierre.langlois@HIDDEN> ;;; Copyright =C2=A9 2021 Philip McGrath <philip@HIDDEN> +;;; Copyright =C2=A9 2024 Daniel Khodabakhsh <d.khodabakhsh@HIDDEN> ;;; ;;; This file is part of GNU Guix. ;;; @@ -36,7 +37,10 @@ (define-module (guix build-system node) (define %node-build-system-modules ;; Build-side modules imported by default. `((guix build node-build-system) - (guix build json) + (json) + (json builder) + (json parser) + (json record) ,@%default-gnu-imported-modules)) (define (default-node) diff --git a/guix/build/node-build-system.scm b/guix/build/node-build-syste= m.scm index fb23894bc1..f95c3bd793 100644 --- a/guix/build/node-build-system.scm +++ b/guix/build/node-build-system.scm @@ -4,6 +4,7 @@ ;;; Copyright =C2=A9 2019, 2021 Timothy Sample <samplet@HIDDEN> ;;; Copyright =C2=A9 2021, 2022 Philip McGrath <philip@HIDDEN> ;;; Copyright =C2=A9 2022 Liliana Marie Prikler <liliana.prikler@HIDDEN= > +;;; Copyright =C2=A9 2024 Daniel Khodabakhsh <d.khodabakhsh@HIDDEN> ;;; ;;; This file is part of GNU Guix. ;;; @@ -23,10 +24,10 @@ (define-module (guix build node-build-system) #:use-module ((guix build gnu-build-system) #:prefix gnu:) #:use-module (guix build utils) - #:use-module (guix build json) #:use-module (ice-9 ftw) #:use-module (ice-9 regex) #:use-module (ice-9 match) + #:use-module (json) #:use-module (srfi srfi-1) #:use-module (srfi srfi-71) #:export (%standard-phases @@ -34,13 +35,14 @@ (define-module (guix build node-build-system) delete-dependencies node-build)) -(define (with-atomic-json-file-replacement file proc) +(define* (with-atomic-json-file-replacement proc + #:optional (file "package.json")) "Like 'with-atomic-file-replacement', but PROC is called with a single argument---the result of parsing FILE's contents as json---and should a va= lue to be written as json to the replacement FILE." (with-atomic-file-replacement file (lambda (in out) - (write-json (proc (read-json in)) out)))) + (scm->json (proc (json->scm in)) out)))) (define* (assoc-ref* alist key #:optional default) "Like assoc-ref, but return DEFAULT instead of #f if no value exists." @@ -48,10 +50,6 @@ (define* (assoc-ref* alist key #:optional default) (#f default) ((_ . value) value))) -(define* (jsobject-ref obj key #:optional default) - (match obj - (('@ . alist) (assoc-ref* alist key default)))) - (define* (alist-pop alist key #:optional (=3D equal?)) "Return two values, the first pair in ALIST with key KEY, and the other elements. Equality calls are made as (=3D KEY ALISTCAR)." @@ -63,67 +61,17 @@ (define* (alist-pop alist key #:optional (=3D equal?)) (values (car after) (append before (cdr after))) (values #f before)))) -(define* (alist-update alist key proc #:optional default (=3D equal?)) +(define* (alist-update alist key proc #:optional (=3D equal?)) "Return an association list like ALIST, but with KEY mapped to the resul= t of PROC applied to the first value found under the comparison (=3D KEY ALISTC= AR). -If no such value exists, use DEFAULT instead. +If no such value exists, return the list unchanged. Unlike acons, this removes the previous association of KEY (assuming it is unique), but the result may still share storage with ALIST." (let ((pair rest (alist-pop alist key =3D))) - (acons key - (proc (if (pair? pair) - (cdr pair) - default)) - rest))) - -(define (jsobject-update* js . updates) - "Return a json object like JS, but with all UPDATES applied. Each updat= e is -a list (KEY PROC [DEFAULT]), so that KEY is mapped to the result of PROC -applied to the value to which KEY is mapped in JS. If no such mapping exi= sts, -PROC is instead applied to DEFAULT, or to '#f' is no DEFAULT is specified. -The update takes place from left to right, so later UPDATERs will receive = the -values returned by earlier UPDATERs for the same KEY." - (match js - (('@ . alist) - (let loop ((alist alist) - (updates updates)) - (match updates - (() (cons '@ alist)) - (((key proc) . updates) - (loop (alist-update alist key proc #f equal?) updates)) - (((key proc default) . updates) - (loop (alist-update alist key proc default equal?) updates))))))= ) - -(define (jsobject-union combine seed . objects) - "Merge OBJECTS into SEED by applying (COMBINE KEY VAL0 VAL), where VAL0 -is the value found in the (possibly updated) SEED and VAL is the new value -found in one of the OBJECTS." - (match seed - (('@ . aseed) - (match objects - (() seed) - ((('@ . alists) ...) - (cons - '@ - (fold (lambda (alist aseed) - (if (null? aseed) alist - (fold - (match-lambda* - (((k . v) aseed) - (let ((pair tail (alist-pop alist k))) - (match pair - (#f (acons k v aseed)) - ((_ . v0) (acons k (combine k v0 v) aseed))))= )) - aseed - alist))) - aseed - alists))))))) + (if (pair? pair) + (acons key (proc (cdr pair)) rest) + alist))) -;; Possibly useful helper functions: -;; (define (newest key val0 val) val) -;; (define (unkeyed->keyed proc) (lambda (_key val0 val) (proc val0 val))) - - ;;; ;;; Phases. ;;; @@ -142,8 +90,8 @@ (define (set-home . _) (define (module-name module) (let* ((package.json (string-append module "/package.json")) - (package-meta (call-with-input-file package.json read-json))) - (jsobject-ref package-meta "name"))) + (package-meta (call-with-input-file package.json json->scm))) + (assoc-ref package-meta "name"))) (define (index-modules input-paths) (define (list-modules directory) @@ -167,49 +115,59 @@ (define* (patch-dependencies #:key inputs #:allow-other-keys) (define index (index-modules (map cdr inputs))) - (define resolve-dependencies - (match-lambda - (('@ . alist) - (cons '@ (map (match-lambda - ((key . value) - (cons key (hash-ref index key value)))) - alist))))) + (define (resolve-dependencies dependencies) + (map + (match-lambda + ((dependency . version) + (cons dependency (hash-ref index dependency version)))) + dependencies)) - (with-atomic-json-file-replacement "package.json" + (with-atomic-json-file-replacement (lambda (pkg-meta) - (jsobject-update* - pkg-meta - `("devDependencies" ,resolve-dependencies (@)) - `("dependencies" ,(lambda (deps) - (resolve-dependencies - (jsobject-union - (lambda (k a b) b) - (jsobject-ref pkg-meta "peerDependencies" '(@= )) - deps))) - (@))))) + (fold + (lambda (proc pkg-meta) (proc pkg-meta)) + pkg-meta + (list + (lambda (pkg-meta) + (alist-update pkg-meta "devDependencies" resolve-dependencies)= ) + (lambda (pkg-meta) + (assoc-set! + pkg-meta + "dependencies" + (resolve-dependencies + ; Combined "peerDependencies" and "dependencies" dependenc= ies + ; with "dependencies" taking precedent. + (fold + (lambda (dependency dependencies) + (apply assoc-set! dependencies dependency)) + (assoc-ref* pkg-meta "peerDependencies" '()) + (assoc-ref* pkg-meta "dependencies" '()))))))))) #t) -(define (delete-dependencies absent) +(define (delete-dependencies dependencies-to-remove) "Rewrite 'package.json' to allow the build to proceed without packages -listed in ABSENT, a list of strings naming npm packages. +listed in 'dependencies-to-remove', a list of strings naming npm packages. To prevent the deleted dependencies from being reintroduced, use this func= tion only after the 'patch-dependencies' phase." - (define delete-from-jsobject - (match-lambda - (('@ . alist) - (cons '@ (filter (match-lambda - ((k . _) - (not (member k absent)))) - alist))))) - - (with-atomic-json-file-replacement "package.json" + (with-atomic-json-file-replacement (lambda (pkg-meta) - (jsobject-update* - pkg-meta - `("devDependencies" ,delete-from-jsobject (@)) - `("dependencies" ,delete-from-jsobject (@)) - `("peerDependencies" ,delete-from-jsobject (@)))))) + (fold + (lambda (dependency-key pkg-meta) + (alist-update + pkg-meta + dependency-key + (lambda (dependencies) + (remove + (lambda (dependency) + (member (car dependency) dependencies-to-remove)) + dependencies)))) + pkg-meta + (list + "devDependencies" + "dependencies" + "peerDependencies" + "optionalDependencies"))))) (define* (delete-lockfiles #:key inputs #:allow-other-keys) "Delete 'package-lock.json', 'yarn.lock', and 'npm-shrinkwrap.json', if = they @@ -228,8 +186,8 @@ (define* (configure #:key outputs inputs #:allow-other-= keys) #t)) (define* (build #:key inputs #:allow-other-keys) - (let ((package-meta (call-with-input-file "package.json" read-json))) - (if (jsobject-ref (jsobject-ref package-meta "scripts" '(@)) "build" #= f) + (let ((package-meta (call-with-input-file "package.json" json->scm))) + (if (assoc-ref* (assoc-ref* package-meta "scripts" '()) "build" #f) (let ((npm (string-append (assoc-ref inputs "node") "/bin/npm"))) (invoke npm "run" "build")) (format #t "there is no build script to run~%")) @@ -301,22 +259,20 @@ (define* (avoid-node-gyp-rebuild #:key outputs #:allow-other-keys) ;; even need to overwrite this file. Therefore, let's use some helpers ;; that we'd otherwise not need. (define pkg-meta - (call-with-input-file installed-package.json read-json)) + (call-with-input-file installed-package.json json->scm)) (define scripts - (jsobject-ref pkg-meta "scripts" '(@))) - (define (jsobject-set js key val) - (jsobject-update* js (list key (const val)))) + (assoc-ref* pkg-meta "scripts" '())) - (when (equal? "node-gyp rebuild" (jsobject-ref scripts "install" #f)) + (when (equal? "node-gyp rebuild" (assoc-ref* scripts "install" #f)) (call-with-output-file installed-package.json (lambda (out) - (write-json - (jsobject-set pkg-meta - "scripts" - (jsobject-set scripts - "install" - "echo Guix: avoiding node-gyp rebuild= ")) - out))))) + (scm->json + (assoc-set! pkg-meta + "scripts" + (assoc-set! scripts + "install" + "echo Guix: avoiding node-gyp rebuild")) + out))))) (define %standard-phases (modify-phases gnu:%standard-phases base-commit: e16cdcf37d8223b3634ec5e658356c3b7f154859 --=20 2.46.0 --0000000000001eb841062a2c5a1f Content-Type: text/x-patch; charset="UTF-8"; name="0001-Replace-guix-build-json-with-json-in-node-build-syst.patch" Content-Disposition: attachment; filename="0001-Replace-guix-build-json-with-json-in-node-build-syst.patch" Content-Transfer-Encoding: base64 Content-ID: <f_m55d06mi0> X-Attachment-Id: f_m55d06mi0 RnJvbSAxOTQ0OWZlYWI5ZTMxNTkwYmJkN2M5MzNiMjExNjNmOGIzOTg0MzliIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgS2hvZGFiYWtoc2ggPGQua2hvZGFiYWtoc2hAZ21h aWwuY29tPgpEYXRlOiBUaHUsIDI2IERlYyAyMDI0IDA0OjM1OjM5IC0wODAwClN1YmplY3Q6IFtQ QVRDSF0gUmVwbGFjZSAoZ3VpeCBidWlsZCBqc29uKSB3aXRoIChqc29uKSBpbiBub2RlIGJ1aWxk IHN5c3RlbQoKVGhpcyBjaGFuZ2UgcmVwbGFjZXMgdGhlIHVzZSBvZiAoZ3VpeCBidWlsZCBqc29u KSB3aXRoIChqc29uKSBmb3IgdGhlIG5vZGUgZWNvc3lzdGVtLgpTaW5jZSBndWlsZS1qc29uIGlz IGEgZGVwZW5kZW5jeSBvZiBHdWl4LCBhbmQgaXQncyB1c2VkIGVsc2V3aGVyZSBpbiB0aGUgcHJv amVjdCwgaXQgbWFrZXMgc2Vuc2UgdG8gdXNlIHRoaXMgaW5zdGVhZCBvZiByb2xsaW5nIG91ciBv d24gSlNPTiBpbXBsZW1lbnRhdGlvbiB3aXRoIChndWl4IGJ1aWxkIGpzb24pLgpUaGlzIGlzIG9u ZSBzdGVwIHRvIG1vdmUgYXdheSBmcm9tIChndWl4IGJ1aWxkIGpzb24pLCB0aGVyZSB3aWxsIGJl IG90aGVyIGNoYW5nZXMgdG8gcmVtb3ZlIHRoZSBvdGhlciB1c2VzIG9mIGl0LgoKU2lnbmVkLW9m Zi1ieTogRGFuaWVsIEtob2RhYmFraHNoIDxkLmtob2RhYmFraHNoQGdtYWlsLmNvbT4KQ2hhbmdl LUlkOiBJOWZkNTE1MmE5OGI2YTI0MWQ0MTRlOWE5NGFiMTc5YzljYWJjZmI4NQotLS0KIGdudS9w YWNrYWdlcy9ub2RlLXh5ei5zY20gICAgICAgIHwgMTQ4ICsrKysrKysrKysrKy0tLS0tLS0tLS0t LS0KIGd1aXgvYnVpbGQtc3lzdGVtL25vZGUuc2NtICAgICAgIHwgICA2ICstCiBndWl4L2J1aWxk L25vZGUtYnVpbGQtc3lzdGVtLnNjbSB8IDE4MCArKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0t LS0tCiAzIGZpbGVzIGNoYW5nZWQsIDEzOSBpbnNlcnRpb25zKCspLCAxOTUgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZ251L3BhY2thZ2VzL25vZGUteHl6LnNjbSBiL2dudS9wYWNrYWdlcy9u b2RlLXh5ei5zY20KaW5kZXggZTk4ZWRhMmEwMS4uZWMzZjlmYmZiMSAxMDA2NDQKLS0tIGEvZ251 L3BhY2thZ2VzL25vZGUteHl6LnNjbQorKysgYi9nbnUvcGFja2FnZXMvbm9kZS14eXouc2NtCkBA IC03LDYgKzcsNyBAQAogOzs7IENvcHlyaWdodCDCqSAyMDIxIERocnV2aW4gR2FuZGhpIDxjb250 YWN0QGRocnV2aW4uZGV2PgogOzs7IENvcHlyaWdodCDCqSAyMDIyIE5pY29sYXMgR3JhdmVzIDxu Z3JhdmVzQG5ncmF2ZXMuZnI+CiA7OzsgQ29weXJpZ2h0IMKpIDIwMjMgSmVsbGUgTGljaHQgPGps aWNodEBmc2ZlLm9yZz4KKzs7OyBDb3B5cmlnaHQgwqkgMjAyNCBEYW5pZWwgS2hvZGFiYWtoc2gg PGQua2hvZGFiYWtoc2hAZ21haWwuY29tPgogOzs7CiA7OzsgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg R05VIEd1aXguCiA7OzsKQEAgLTI0LDE0ICsyNSwxNCBAQAogOzs7IGFsb25nIHdpdGggR05VIEd1 aXguICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiAKIChkZWZp bmUtbW9kdWxlIChnbnUgcGFja2FnZXMgbm9kZS14eXopCi0gICM6dXNlLW1vZHVsZSAoKGd1aXgg bGljZW5zZXMpICM6cHJlZml4IGxpY2Vuc2U6KQogICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdl cyBzcWxpdGUpCiAgICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIHB5dGhvbikKICAgIzp1c2Ut bW9kdWxlIChnbnUgcGFja2FnZXMgd2ViKQorICAjOnVzZS1tb2R1bGUgKGd1aXggYnVpbGQtc3lz dGVtIG5vZGUpCiAgICM6dXNlLW1vZHVsZSAoZ3VpeCBnZXhwKQotICAjOnVzZS1tb2R1bGUgKGd1 aXggcGFja2FnZXMpCiAgICM6dXNlLW1vZHVsZSAoZ3VpeCBnaXQtZG93bmxvYWQpCi0gICM6dXNl LW1vZHVsZSAoZ3VpeCBidWlsZC1zeXN0ZW0gbm9kZSkpCisgICM6dXNlLW1vZHVsZSAoKGd1aXgg bGljZW5zZXMpICM6cHJlZml4IGxpY2Vuc2U6KQorICAjOnVzZS1tb2R1bGUgKGd1aXggcGFja2Fn ZXMpKQogCiA7OzsKIDs7OyBQbGVhc2U6IFRyeSB0byBhZGQgbmV3IG1vZHVsZSBwYWNrYWdlcyBp biBhbHBoYWJldGljIG9yZGVyLgpAQCAtNjksMTkgKzcwLDE3IEBAIChkZWZpbmUtcHVibGljIG5v ZGUtYWNvcm4KICAgICAgICAgICAgICA7OyBpdCB3b3VsZCB0cnkgdG8gdXNlIHRoZSBidWlsZCBl bnZpcm9ubWVudCBhbmQgd291bGQgYmxvY2sgdGhlCiAgICAgICAgICAgICAgOzsgYXV0b21hdGlj IGJ1aWxkaW5nIGJ5IG90aGVyIHBhY2thZ2VzIG1ha2luZyB1c2Ugb2Ygbm9kZS1hY29ybi4KICAg ICAgICAgICAgICA7OyBUT0RPOiBBZGQgdXRpbGl0eSBmdW5jdGlvbgotICAgICAgICAgICAgICh3 aXRoLWF0b21pYy1qc29uLWZpbGUtcmVwbGFjZW1lbnQgInBhY2thZ2UuanNvbiIKLSAgICAgICAg ICAgICAgIChtYXRjaC1sYW1iZGEKLSAgICAgICAgICAgICAgICAgKCgnQCAuIHBrZy1tZXRhLWFs aXN0KQotICAgICAgICAgICAgICAgICAgKGNvbnMgJ0AgKG1hcCAobWF0Y2gtbGFtYmRhCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgic2NyaXB0cyIgQCAuIHNjcmlwdHMtYWxp c3QpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAoInNjcmlwdHMiIEAgLEAo ZmlsdGVyIChtYXRjaC1sYW1iZGEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoKCJwcmVwYXJlIiAuIF8pCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNmKQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChfCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICN0KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2NyaXB0cy1hbGlzdCkpKQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChvdGhlciBvdGhlcikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHBrZy1tZXRhLWFsaXN0KSkpKSkpKQorICAgICAgICAgICAgICh3aXRoLWF0b21pYy1qc29u LWZpbGUtcmVwbGFjZW1lbnQgKGxhbWJkYSAocGtnLW1ldGEtYWxpc3QpCisgICAgICAgICAgICAg ICAobWFwCisgICAgICAgICAgICAgICAgIChtYXRjaC1sYW1iZGEKKyAgICAgICAgICAgICAgICAg ICAoKCJzY3JpcHRzIiAuIHNjcmlwdHMtYWxpc3QpCisgICAgICAgICAgICAgICAgICAgICAoY29u cyAic2NyaXB0cyIgKGZpbHRlcgorICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2gtbGFtYmRh CisgICAgICAgICAgICAgICAgICAgICAgICAgKCgicHJlcGFyZSIgLiBfKSAjZikKKyAgICAgICAg ICAgICAgICAgICAgICAgICAoXyAjdCkpCisgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdHMt YWxpc3QpKSkKKyAgICAgICAgICAgICAgICAgICAob3RoZXIgb3RoZXIpKQorICAgICAgICAgICAg ICAgICBwa2ctbWV0YS1hbGlzdCkpKSkpCiAgICAgICAgICAocmVwbGFjZSAnYnVpbGQKICAgICAg ICAgICAgKGxhbWJkYSogKCM6a2V5IGlucHV0cyBuYXRpdmUtaW5wdXRzICM6YWxsb3ctb3RoZXIt a2V5cykKICAgICAgICAgICAgICAobGV0ICgoZXNidWlsZCAoc2VhcmNoLWlucHV0LWZpbGUgKG9y IG5hdGl2ZS1pbnB1dHMgaW5wdXRzKQpAQCAtMTU4LDIzICsxNTcsMTcgQEAgKGRlZmluZS1wdWJs aWMgbm9kZS1hZGRvbi1hcGkKICAgICAgICAgICAgKGxhbWJkYSBhcmdzCiAgICAgICAgICAgICAg KGRlZmluZSBuZXctdGVzdC1zY3JpcHQKICAgICAgICAgICAgICAgICJlY2hvIHN0b3BwaW5nIGFm dGVyIHByZXRlc3Qgb24gR3VpeCIpCi0gICAgICAgICAgICAgKHdpdGgtYXRvbWljLWpzb24tZmls ZS1yZXBsYWNlbWVudCAicGFja2FnZS5qc29uIgotICAgICAgICAgICAgICAgKG1hdGNoLWxhbWJk YQotICAgICAgICAgICAgICAgICAoKCdAIC4gcGtnLW1ldGEtYWxpc3QpCi0gICAgICAgICAgICAg ICAgICAoY29ucwotICAgICAgICAgICAgICAgICAgICdACi0gICAgICAgICAgICAgICAgICAgKG1h cCAobWF0Y2gtbGFtYmRhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICgoInNjcmlwdHMiICdA IC4gc2NyaXB0cy1hbGlzdCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGAoInNjcmlwdHMi IEAgLEAobWFwIChtYXRjaC1sYW1iZGEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKCgidGVzdCIgLiBfKQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnMgInRlc3QiCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXctdGVzdC1zY3JpcHQp KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3Ro ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90 aGVyKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNj cmlwdHMtYWxpc3QpKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKG90aGVyCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICBvdGhlcikpCi0gICAgICAgICAgICAgICAgICAgICAgICBwa2ct bWV0YS1hbGlzdCkpKSkpKSkpKSkKKyAgICAgICAgICAgICAod2l0aC1hdG9taWMtanNvbi1maWxl LXJlcGxhY2VtZW50IChsYW1iZGEgKHBrZy1tZXRhLWFsaXN0KQorICAgICAgICAgICAgICAgKG1h cAorICAgICAgICAgICAgICAgICAobWF0Y2gtbGFtYmRhCisgICAgICAgICAgICAgICAgICAgKCgi c2NyaXB0cyIgLiBzY3JpcHRzLWFsaXN0KQorICAgICAgICAgICAgICAgICAgICAgKGNvbnMgInNj cmlwdHMiIChtYXAKKyAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoLWxhbWJkYQorICAgICAg ICAgICAgICAgICAgICAgICAgICgoInRlc3QiIC4gXykgKGNvbnMgInRlc3QiIG5ldy10ZXN0LXNj cmlwdCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgKG90aGVyIG90aGVyKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgc2NyaXB0cy1hbGlzdCkpKQorICAgICAgICAgICAgICAgICAgIChvdGhl ciBvdGhlcikpCisgICAgICAgICAgICAgICAgIHBrZy1tZXRhLWFsaXN0KSkpKSkpKSkKICAgICAo aG9tZS1wYWdlICJodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUtYWRkb24tYXBpIikKICAg ICAoc3lub3BzaXMgIk5vZGUuanMgQVBJIChOb2RlLUFQSSkgaGVhZGVyLW9ubHkgQysrIHdyYXBw ZXJzIikKICAgICAoZGVzY3JpcHRpb24gIlRoaXMgbW9kdWxlIGNvbnRhaW5zIGhlYWRlci1vbmx5 IEMrKyB3cmFwcGVyIGNsYXNzZXMgd2hpY2gKQEAgLTEyMjMsMjIgKzEyMTYsMTkgQEAgKGRlZmlu ZS1wdWJsaWMgbm9kZS1zZXJpYWxwb3J0LWJpbmRpbmdzCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAibm9kZS1hYmkiKSkpKQogICAgICAgICAgKGFkZC1hZnRlciAnY2hkaXIg J2F2b2lkLXByZWJ1aWxkLWluc3RhbGwKICAgICAgICAgICAgKGxhbWJkYSBhcmdzCi0gICAgICAg ICAgICAgKHdpdGgtYXRvbWljLWpzb24tZmlsZS1yZXBsYWNlbWVudCAicGFja2FnZS5qc29uIgot ICAgICAgICAgICAgICAgKG1hdGNoLWxhbWJkYQotICAgICAgICAgICAgICAgICAoKCdAIC4gcGtn LW1ldGEtYWxpc3QpCi0gICAgICAgICAgICAgICAgICAoY29ucyAnQCAobWFwIChtYXRjaC1sYW1i ZGEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCJzY3JpcHRzIiBAIC4gc2Ny aXB0cy1hbGlzdCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCgic2NyaXB0 cyIgQCAsQChmaWx0ZXIgKG1hdGNoLWxhbWJkYQotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoImluc3RhbGwiIC4gXykKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg I2YpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKF8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgI3QpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRzLWFsaXN0KSkpCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKCgiZ3lwZmlsZSIgLiBfKQotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnKCJneXBmaWxlIiAuICNmKSkKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAob3RoZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg b3RoZXIpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwa2ctbWV0YS1hbGlzdCkp KSkpKSkpCisgICAgICAgICAgICAgKHdpdGgtYXRvbWljLWpzb24tZmlsZS1yZXBsYWNlbWVudCAo bGFtYmRhIChwa2ctbWV0YS1hbGlzdCkKKyAgICAgICAgICAgICAgIChtYXAKKyAgICAgICAgICAg ICAgICAgKG1hdGNoLWxhbWJkYQorICAgICAgICAgICAgICAgICAgICgoInNjcmlwdHMiIC4gc2Ny aXB0cy1hbGlzdCkKKyAgICAgICAgICAgICAgICAgICAgIChjb25zICJzY3JpcHRzIiAoZmlsdGVy CisgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaC1sYW1iZGEKKyAgICAgICAgICAgICAgICAg ICAgICAgICAoKCJpbnN0YWxsIiAuIF8pICNmKQorICAgICAgICAgICAgICAgICAgICAgICAgIChf ICN0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0cy1hbGlzdCkpKQorICAgICAgICAg ICAgICAgICAgICgoImd5cGZpbGUiIC4gXykKKyAgICAgICAgICAgICAgICAgICAgIChjb25zICJn eXBmaWxlIiAjZikpCisgICAgICAgICAgICAgICAgICAgKG90aGVyIG90aGVyKSkKKyAgICAgICAg ICAgICAgICAgcGtnLW1ldGEtYWxpc3QpKSkpKSkKICAgICAgICAjOnRlc3RzPyAjZikpCiAgICAg KHN5bm9wc2lzICJBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBOb2RlIFNlcmlhbFBvcnQgYmluZGlu Z3MiKQogICAgIChkZXNjcmlwdGlvbiAiTm9kZSBTZXJpYWxQb3J0IGlzIGEgbW9kdWxhciBzdWl0 ZSBvZiBOb2RlLmpzIHBhY2thZ2VzIGZvcgpAQCAtMTUyNCwzOSArMTUxNCwzMyBAQCAoZGVmaW5l LXB1YmxpYyBub2RlLXNxbGl0ZTMKICAgICAgICAgICAgICAoc3Vic3RpdHV0ZSogIi5ucG1pZ25v cmUiCiAgICAgICAgICAgICAgICAoKCJsaWIvYmluZGluZyIpCiAgICAgICAgICAgICAgICAgIiNs aWIvYmluZGluZyAjIDwtIHBhdGNoZWQgZm9yIEd1aXgiKSkKLSAgICAgICAgICAgICAod2l0aC1h dG9taWMtanNvbi1maWxlLXJlcGxhY2VtZW50ICJwYWNrYWdlLmpzb24iCi0gICAgICAgICAgICAg ICAobWF0Y2gtbGFtYmRhCi0gICAgICAgICAgICAgICAgICgoJ0AgLiBwa2ctbWV0YS1hbGlzdCkK LSAgICAgICAgICAgICAgICAgIChtYXRjaCAoYXNzb2MtcmVmIHBrZy1tZXRhLWFsaXN0ICJiaW5h cnkiKQotICAgICAgICAgICAgICAgICAgICAoKCdAIC4gYmluYXJ5LWFsaXN0KQotICAgICAgICAg ICAgICAgICAgICAgOzsgV2hlbiBpdCBidWlsZHMgZnJvbSBzb3VyY2UsIG5vZGUtcHJlLWd5cCBz dXBwbGllcwotICAgICAgICAgICAgICAgICAgICAgOzsgbW9kdWxlX25hbWUgYW5kIG1vZHVsZV9w YXRoIGJhc2VkIG9uIHRoZSBlbnRyaWVzIHVuZGVyCi0gICAgICAgICAgICAgICAgICAgICA7OyAi YmluYXJ5IiBmcm9tICJwYWNrYWdlLmpzb24iLCBzbyB0aGlzIHBhY2thZ2UncwotICAgICAgICAg ICAgICAgICAgICAgOzsgImJpbmRpbmcuZ3lwIiBkb2Vzbid0IGRlZmluZSB0aGVtLiBUaHVzLCB3 ZSBhbHNvIG5lZWQKLSAgICAgICAgICAgICAgICAgICAgIDs7IHRvIHN1cHBseSB0aGVtLiBUaGUg R1lQX0RFRklORVMgZW52aXJvbm1lbnQgdmFyaWFibGUKLSAgICAgICAgICAgICAgICAgICAgIDs7 IHR1cm5zIG91dCB0byBiZSB0aGUgZWFzaWVzdCB3YXkgdG8gbWFrZSBzdXJlIHRoZXkgYXJlCi0g ICAgICAgICAgICAgICAgICAgICA7OyBwcm9wYWdhdGVkIGZyb20gbnBtIHRvIG5vZGUtZ3lwIHRv IGd5cC4KLSAgICAgICAgICAgICAgICAgICAgIChzZXRlbnYgIkdZUF9ERUZJTkVTIgotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIm1vZHVsZV9uYW1lPSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChhc3NvYy1yZWYgYmluYXJ5LWFsaXN0ICJtb2R1bGVfbmFtZSIpCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2R1bGVf cGF0aD0iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXNzb2MtcmVmIGJpbmFyeS1h bGlzdCAibW9kdWxlX3BhdGgiKSkpKSkKLSAgICAgICAgICAgICAgICAgIDs7IFdlIG5lZWQgdG8g cmVtb3ZlIHRoZSBpbnN0YWxsIHNjcmlwdCBmcm9tICJwYWNrYWdlLmpzb24iLAotICAgICAgICAg ICAgICAgICAgOzsgYXMgaXQgd291bGQgdHJ5IHRvIHVzZSBub2RlLXByZS1neXAgYW5kIHdvdWxk IGJsb2NrIHRoZQotICAgICAgICAgICAgICAgICAgOzsgYXV0b21hdGljIGJ1aWxkaW5nIHBlcmZv cm1lZCBieSBgbnBtIGluc3RhbGxgLgotICAgICAgICAgICAgICAgICAgKGNvbnMgJ0AgKG1hcCAo bWF0Y2gtbGFtYmRhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgic2NyaXB0 cyIgQCAuIHNjcmlwdHMtYWxpc3QpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGAoInNjcmlwdHMiIEAgLEAoZmlsdGVyIChtYXRjaC1sYW1iZGEKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCJpbnN0YWxsIiAu IF8pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICNmKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChfCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICN0KSkKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0cy1hbGlzdCkpKQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvdGhlcgotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBvdGhlcikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBrZy1tZXRhLWFsaXN0KSkpKSkpKSkpKQorICAgICAgICAgICAgICh3aXRoLWF0b21pYy1qc29u LWZpbGUtcmVwbGFjZW1lbnQgKGxhbWJkYSAocGtnLW1ldGEtYWxpc3QpCisgICAgICAgICAgICAg ICAobGV0ICgoYmluYXJ5LWFsaXN0IChhc3NvYy1yZWYgcGtnLW1ldGEtYWxpc3QgImJpbmFyeSIp KSkKKyAgICAgICAgICAgICAgICAgOzsgV2hlbiBpdCBidWlsZHMgZnJvbSBzb3VyY2UsIG5vZGUt cHJlLWd5cCBzdXBwbGllcworICAgICAgICAgICAgICAgICA7OyBtb2R1bGVfbmFtZSBhbmQgbW9k dWxlX3BhdGggYmFzZWQgb24gdGhlIGVudHJpZXMgdW5kZXIKKyAgICAgICAgICAgICAgICAgOzsg ImJpbmFyeSIgZnJvbSAicGFja2FnZS5qc29uIiwgc28gdGhpcyBwYWNrYWdlJ3MKKyAgICAgICAg ICAgICAgICAgOzsgImJpbmRpbmcuZ3lwIiBkb2Vzbid0IGRlZmluZSB0aGVtLiBUaHVzLCB3ZSBh bHNvIG5lZWQKKyAgICAgICAgICAgICAgICAgOzsgdG8gc3VwcGx5IHRoZW0uIFRoZSBHWVBfREVG SU5FUyBlbnZpcm9ubWVudCB2YXJpYWJsZQorICAgICAgICAgICAgICAgICA7OyB0dXJucyBvdXQg dG8gYmUgdGhlIGVhc2llc3Qgd2F5IHRvIG1ha2Ugc3VyZSB0aGV5IGFyZQorICAgICAgICAgICAg ICAgICA7OyBwcm9wYWdhdGVkIGZyb20gbnBtIHRvIG5vZGUtZ3lwIHRvIGd5cC4KKyAgICAgICAg ICAgICAgICAgKHNldGVudiAiR1lQX0RFRklORVMiIChzdHJpbmctYXBwZW5kCisgICAgICAgICAg ICAgICAgICAgIm1vZHVsZV9uYW1lPSIKKyAgICAgICAgICAgICAgICAgICAoYXNzb2MtcmVmIGJp bmFyeS1hbGlzdCAibW9kdWxlX25hbWUiKQorICAgICAgICAgICAgICAgICAgICIgbW9kdWxlX3Bh dGg9IgorICAgICAgICAgICAgICAgICAgIChhc3NvYy1yZWYgYmluYXJ5LWFsaXN0ICJtb2R1bGVf cGF0aCIpKSkpCisgICAgICAgICAgICAgICA7OyBXZSBuZWVkIHRvIHJlbW92ZSB0aGUgaW5zdGFs bCBzY3JpcHQgZnJvbSAicGFja2FnZS5qc29uIiwKKyAgICAgICAgICAgICAgIDs7IGFzIGl0IHdv dWxkIHRyeSB0byB1c2Ugbm9kZS1wcmUtZ3lwIGFuZCB3b3VsZCBibG9jayB0aGUKKyAgICAgICAg ICAgICAgIDs7IGF1dG9tYXRpYyBidWlsZGluZyBwZXJmb3JtZWQgYnkgYG5wbSBpbnN0YWxsYC4K KyAgICAgICAgICAgICAgIChtYXAKKyAgICAgICAgICAgICAgICAgKG1hdGNoLWxhbWJkYQorICAg ICAgICAgICAgICAgICAgICgoInNjcmlwdHMiIC4gc2NyaXB0cy1hbGlzdCkKKyAgICAgICAgICAg ICAgICAgICAgIChjb25zICJzY3JpcHRzIiAoZmlsdGVyCisgICAgICAgICAgICAgICAgICAgICAg IChtYXRjaC1sYW1iZGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCJpbnN0YWxsIiAuIF8p ICNmKQorICAgICAgICAgICAgICAgICAgICAgICAgIChfICN0KSkKKyAgICAgICAgICAgICAgICAg ICAgICAgc2NyaXB0cy1hbGlzdCkpKQorICAgICAgICAgICAgICAgICAgIChvdGhlciBvdGhlcikp CisgICAgICAgICAgICAgICAgIHBrZy1tZXRhLWFsaXN0KSkpKSkpKSkKICAgICAoaG9tZS1wYWdl ICJodHRwczovL2dpdGh1Yi5jb20vbWFwYm94L25vZGUtc3FsaXRlMyIpCiAgICAgKHN5bm9wc2lz ICJOb2RlLmpzIGJpbmRpbmdzIGZvciBTUUxpdGUzIikKICAgICAoZGVzY3JpcHRpb24KZGlmZiAt LWdpdCBhL2d1aXgvYnVpbGQtc3lzdGVtL25vZGUuc2NtIGIvZ3VpeC9idWlsZC1zeXN0ZW0vbm9k ZS5zY20KaW5kZXggNTdmZTVmNjAzMC4uNDI1YjhjZDliMyAxMDA2NDQKLS0tIGEvZ3VpeC9idWls ZC1zeXN0ZW0vbm9kZS5zY20KKysrIGIvZ3VpeC9idWlsZC1zeXN0ZW0vbm9kZS5zY20KQEAgLTQs NiArNCw3IEBACiA7OzsgQ29weXJpZ2h0IMKpIDIwMjEgTHVkb3ZpYyBDb3VydMOocyA8bHVkb0Bn bnUub3JnPgogOzs7IENvcHlyaWdodCDCqSAyMDIxIFBpZXJyZSBMYW5nbG9pcyA8cGllcnJlLmxh bmdsb2lzQGdteC5jb20+CiA7OzsgQ29weXJpZ2h0IMKpIDIwMjEgUGhpbGlwIE1jR3JhdGggPHBo aWxpcEBwaGlsaXBtY2dyYXRoLmNvbT4KKzs7OyBDb3B5cmlnaHQgwqkgMjAyNCBEYW5pZWwgS2hv ZGFiYWtoc2ggPGQua2hvZGFiYWtoc2hAZ21haWwuY29tPgogOzs7CiA7OzsgVGhpcyBmaWxlIGlz IHBhcnQgb2YgR05VIEd1aXguCiA7OzsKQEAgLTM2LDcgKzM3LDEwIEBAIChkZWZpbmUtbW9kdWxl IChndWl4IGJ1aWxkLXN5c3RlbSBub2RlKQogKGRlZmluZSAlbm9kZS1idWlsZC1zeXN0ZW0tbW9k dWxlcwogICA7OyBCdWlsZC1zaWRlIG1vZHVsZXMgaW1wb3J0ZWQgYnkgZGVmYXVsdC4KICAgYCgo Z3VpeCBidWlsZCBub2RlLWJ1aWxkLXN5c3RlbSkKLSAgICAoZ3VpeCBidWlsZCBqc29uKQorICAg IChqc29uKQorICAgIChqc29uIGJ1aWxkZXIpCisgICAgKGpzb24gcGFyc2VyKQorICAgIChqc29u IHJlY29yZCkKICAgICAsQCVkZWZhdWx0LWdudS1pbXBvcnRlZC1tb2R1bGVzKSkKIAogKGRlZmlu ZSAoZGVmYXVsdC1ub2RlKQpkaWZmIC0tZ2l0IGEvZ3VpeC9idWlsZC9ub2RlLWJ1aWxkLXN5c3Rl bS5zY20gYi9ndWl4L2J1aWxkL25vZGUtYnVpbGQtc3lzdGVtLnNjbQppbmRleCBmYjIzODk0YmMx Li5mOTVjM2JkNzkzIDEwMDY0NAotLS0gYS9ndWl4L2J1aWxkL25vZGUtYnVpbGQtc3lzdGVtLnNj bQorKysgYi9ndWl4L2J1aWxkL25vZGUtYnVpbGQtc3lzdGVtLnNjbQpAQCAtNCw2ICs0LDcgQEAK IDs7OyBDb3B5cmlnaHQgwqkgMjAxOSwgMjAyMSBUaW1vdGh5IFNhbXBsZSA8c2FtcGxldEBuZ3ly by5jb20+CiA7OzsgQ29weXJpZ2h0IMKpIDIwMjEsIDIwMjIgUGhpbGlwIE1jR3JhdGggPHBoaWxp cEBwaGlsaXBtY2dyYXRoLmNvbT4KIDs7OyBDb3B5cmlnaHQgwqkgMjAyMiBMaWxpYW5hIE1hcmll IFByaWtsZXIgPGxpbGlhbmEucHJpa2xlckBnbWFpbC5jb20+Cis7OzsgQ29weXJpZ2h0IMKpIDIw MjQgRGFuaWVsIEtob2RhYmFraHNoIDxkLmtob2RhYmFraHNoQGdtYWlsLmNvbT4KIDs7OwogOzs7 IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBHdWl4LgogOzs7CkBAIC0yMywxMCArMjQsMTAgQEAK IChkZWZpbmUtbW9kdWxlIChndWl4IGJ1aWxkIG5vZGUtYnVpbGQtc3lzdGVtKQogICAjOnVzZS1t b2R1bGUgKChndWl4IGJ1aWxkIGdudS1idWlsZC1zeXN0ZW0pICM6cHJlZml4IGdudTopCiAgICM6 dXNlLW1vZHVsZSAoZ3VpeCBidWlsZCB1dGlscykKLSAgIzp1c2UtbW9kdWxlIChndWl4IGJ1aWxk IGpzb24pCiAgICM6dXNlLW1vZHVsZSAoaWNlLTkgZnR3KQogICAjOnVzZS1tb2R1bGUgKGljZS05 IHJlZ2V4KQogICAjOnVzZS1tb2R1bGUgKGljZS05IG1hdGNoKQorICAjOnVzZS1tb2R1bGUgKGpz b24pCiAgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTEpCiAgICM6dXNlLW1vZHVsZSAoc3JmaSBz cmZpLTcxKQogICAjOmV4cG9ydCAoJXN0YW5kYXJkLXBoYXNlcwpAQCAtMzQsMTMgKzM1LDE0IEBA IChkZWZpbmUtbW9kdWxlIChndWl4IGJ1aWxkIG5vZGUtYnVpbGQtc3lzdGVtKQogICAgICAgICAg ICAgZGVsZXRlLWRlcGVuZGVuY2llcwogICAgICAgICAgICAgbm9kZS1idWlsZCkpCiAKLShkZWZp bmUgKHdpdGgtYXRvbWljLWpzb24tZmlsZS1yZXBsYWNlbWVudCBmaWxlIHByb2MpCisoZGVmaW5l KiAod2l0aC1hdG9taWMtanNvbi1maWxlLXJlcGxhY2VtZW50IHByb2MKKyAgIzpvcHRpb25hbCAo ZmlsZSAicGFja2FnZS5qc29uIikpCiAgICJMaWtlICd3aXRoLWF0b21pYy1maWxlLXJlcGxhY2Vt ZW50JywgYnV0IFBST0MgaXMgY2FsbGVkIHdpdGggYSBzaW5nbGUKIGFyZ3VtZW50LS0tdGhlIHJl c3VsdCBvZiBwYXJzaW5nIEZJTEUncyBjb250ZW50cyBhcyBqc29uLS0tYW5kIHNob3VsZCBhIHZh bHVlCiB0byBiZSB3cml0dGVuIGFzIGpzb24gdG8gdGhlIHJlcGxhY2VtZW50IEZJTEUuIgogICAo d2l0aC1hdG9taWMtZmlsZS1yZXBsYWNlbWVudCBmaWxlCiAgICAgKGxhbWJkYSAoaW4gb3V0KQot ICAgICAgKHdyaXRlLWpzb24gKHByb2MgKHJlYWQtanNvbiBpbikpIG91dCkpKSkKKyAgICAgIChz Y20tPmpzb24gKHByb2MgKGpzb24tPnNjbSBpbikpIG91dCkpKSkKIAogKGRlZmluZSogKGFzc29j LXJlZiogYWxpc3Qga2V5ICM6b3B0aW9uYWwgZGVmYXVsdCkKICAgIkxpa2UgYXNzb2MtcmVmLCBi dXQgcmV0dXJuIERFRkFVTFQgaW5zdGVhZCBvZiAjZiBpZiBubyB2YWx1ZSBleGlzdHMuIgpAQCAt NDgsMTAgKzUwLDYgQEAgKGRlZmluZSogKGFzc29jLXJlZiogYWxpc3Qga2V5ICM6b3B0aW9uYWwg ZGVmYXVsdCkKICAgICAoI2YgZGVmYXVsdCkKICAgICAoKF8gLiB2YWx1ZSkgdmFsdWUpKSkKIAot KGRlZmluZSogKGpzb2JqZWN0LXJlZiBvYmoga2V5ICM6b3B0aW9uYWwgZGVmYXVsdCkKLSAgKG1h dGNoIG9iagotICAgICgoJ0AgLiBhbGlzdCkgKGFzc29jLXJlZiogYWxpc3Qga2V5IGRlZmF1bHQp KSkpCi0KIChkZWZpbmUqIChhbGlzdC1wb3AgYWxpc3Qga2V5ICM6b3B0aW9uYWwgKD0gZXF1YWw/ KSkKICAgIlJldHVybiB0d28gdmFsdWVzLCB0aGUgZmlyc3QgcGFpciBpbiBBTElTVCB3aXRoIGtl eSBLRVksIGFuZCB0aGUgb3RoZXIKIGVsZW1lbnRzLiAgRXF1YWxpdHkgY2FsbHMgYXJlIG1hZGUg YXMgKD0gS0VZIEFMSVNUQ0FSKS4iCkBAIC02Myw2NyArNjEsMTcgQEAgKGRlZmluZSogKGFsaXN0 LXBvcCBhbGlzdCBrZXkgIzpvcHRpb25hbCAoPSBlcXVhbD8pKQogICAgICAgICAodmFsdWVzIChj YXIgYWZ0ZXIpIChhcHBlbmQgYmVmb3JlIChjZHIgYWZ0ZXIpKSkKICAgICAgICAgKHZhbHVlcyAj ZiBiZWZvcmUpKSkpCiAKLShkZWZpbmUqIChhbGlzdC11cGRhdGUgYWxpc3Qga2V5IHByb2MgIzpv cHRpb25hbCBkZWZhdWx0ICg9IGVxdWFsPykpCisoZGVmaW5lKiAoYWxpc3QtdXBkYXRlIGFsaXN0 IGtleSBwcm9jICM6b3B0aW9uYWwgKD0gZXF1YWw/KSkKICAgIlJldHVybiBhbiBhc3NvY2lhdGlv biBsaXN0IGxpa2UgQUxJU1QsIGJ1dCB3aXRoIEtFWSBtYXBwZWQgdG8gdGhlIHJlc3VsdCBvZgog UFJPQyBhcHBsaWVkIHRvIHRoZSBmaXJzdCB2YWx1ZSBmb3VuZCB1bmRlciB0aGUgY29tcGFyaXNv biAoPSBLRVkgQUxJU1RDQVIpLgotSWYgbm8gc3VjaCB2YWx1ZSBleGlzdHMsIHVzZSBERUZBVUxU IGluc3RlYWQuCitJZiBubyBzdWNoIHZhbHVlIGV4aXN0cywgcmV0dXJuIHRoZSBsaXN0IHVuY2hh bmdlZC4KIFVubGlrZSBhY29ucywgdGhpcyByZW1vdmVzIHRoZSBwcmV2aW91cyBhc3NvY2lhdGlv biBvZiBLRVkgKGFzc3VtaW5nIGl0IGlzCiB1bmlxdWUpLCBidXQgdGhlIHJlc3VsdCBtYXkgc3Rp bGwgc2hhcmUgc3RvcmFnZSB3aXRoIEFMSVNULiIKICAgKGxldCAoKHBhaXIgcmVzdCAoYWxpc3Qt cG9wIGFsaXN0IGtleSA9KSkpCi0gICAgKGFjb25zIGtleQotICAgICAgICAgICAocHJvYyAoaWYg KHBhaXI/IHBhaXIpCi0gICAgICAgICAgICAgICAgICAgICAoY2RyIHBhaXIpCi0gICAgICAgICAg ICAgICAgICAgICBkZWZhdWx0KSkKLSAgICAgICAgICAgcmVzdCkpKQotCi0oZGVmaW5lIChqc29i amVjdC11cGRhdGUqIGpzIC4gdXBkYXRlcykKLSAgIlJldHVybiBhIGpzb24gb2JqZWN0IGxpa2Ug SlMsIGJ1dCB3aXRoIGFsbCBVUERBVEVTIGFwcGxpZWQuICBFYWNoIHVwZGF0ZSBpcwotYSBsaXN0 IChLRVkgUFJPQyBbREVGQVVMVF0pLCBzbyB0aGF0IEtFWSBpcyBtYXBwZWQgdG8gdGhlIHJlc3Vs dCBvZiBQUk9DCi1hcHBsaWVkIHRvIHRoZSB2YWx1ZSB0byB3aGljaCBLRVkgaXMgbWFwcGVkIGlu IEpTLiAgSWYgbm8gc3VjaCBtYXBwaW5nIGV4aXN0cywKLVBST0MgaXMgaW5zdGVhZCBhcHBsaWVk IHRvIERFRkFVTFQsIG9yIHRvICcjZicgaXMgbm8gREVGQVVMVCBpcyBzcGVjaWZpZWQuCi1UaGUg dXBkYXRlIHRha2VzIHBsYWNlIGZyb20gbGVmdCB0byByaWdodCwgc28gbGF0ZXIgVVBEQVRFUnMg d2lsbCByZWNlaXZlIHRoZQotdmFsdWVzIHJldHVybmVkIGJ5IGVhcmxpZXIgVVBEQVRFUnMgZm9y IHRoZSBzYW1lIEtFWS4iCi0gIChtYXRjaCBqcwotICAgICgoJ0AgLiBhbGlzdCkKLSAgICAgKGxl dCBsb29wICgoYWxpc3QgYWxpc3QpCi0gICAgICAgICAgICAgICAgKHVwZGF0ZXMgdXBkYXRlcykp Ci0gICAgICAgKG1hdGNoIHVwZGF0ZXMKLSAgICAgICAgICgoKSAoY29ucyAnQCBhbGlzdCkpCi0g ICAgICAgICAoKChrZXkgcHJvYykgLiB1cGRhdGVzKQotICAgICAgICAgIChsb29wIChhbGlzdC11 cGRhdGUgYWxpc3Qga2V5IHByb2MgI2YgZXF1YWw/KSB1cGRhdGVzKSkKLSAgICAgICAgICgoKGtl eSBwcm9jIGRlZmF1bHQpIC4gdXBkYXRlcykKLSAgICAgICAgICAobG9vcCAoYWxpc3QtdXBkYXRl IGFsaXN0IGtleSBwcm9jIGRlZmF1bHQgZXF1YWw/KSB1cGRhdGVzKSkpKSkpKQotCi0oZGVmaW5l IChqc29iamVjdC11bmlvbiBjb21iaW5lIHNlZWQgLiBvYmplY3RzKQotICAiTWVyZ2UgT0JKRUNU UyBpbnRvIFNFRUQgYnkgYXBwbHlpbmcgKENPTUJJTkUgS0VZIFZBTDAgVkFMKSwgd2hlcmUgVkFM MAotaXMgdGhlIHZhbHVlIGZvdW5kIGluIHRoZSAocG9zc2libHkgdXBkYXRlZCkgU0VFRCBhbmQg VkFMIGlzIHRoZSBuZXcgdmFsdWUKLWZvdW5kIGluIG9uZSBvZiB0aGUgT0JKRUNUUy4iCi0gICht YXRjaCBzZWVkCi0gICAgKCgnQCAuIGFzZWVkKQotICAgICAobWF0Y2ggb2JqZWN0cwotICAgICAg ICgoKSBzZWVkKQotICAgICAgICgoKCdAIC4gYWxpc3RzKSAuLi4pCi0gICAgICAgIChjb25zCi0g ICAgICAgICAnQAotICAgICAgICAgKGZvbGQgKGxhbWJkYSAoYWxpc3QgYXNlZWQpCi0gICAgICAg ICAgICAgICAgIChpZiAobnVsbD8gYXNlZWQpIGFsaXN0Ci0gICAgICAgICAgICAgICAgICAgICAo Zm9sZAotICAgICAgICAgICAgICAgICAgICAgIChtYXRjaC1sYW1iZGEqCi0gICAgICAgICAgICAg ICAgICAgICAgICAoKChrIC4gdikgYXNlZWQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgKGxl dCAoKHBhaXIgdGFpbCAoYWxpc3QtcG9wIGFsaXN0IGspKSkKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgIChtYXRjaCBwYWlyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgjZiAoYWNv bnMgayB2IGFzZWVkKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfIC4gdjApIChh Y29ucyBrIChjb21iaW5lIGsgdjAgdikgYXNlZWQpKSkpKSkKLSAgICAgICAgICAgICAgICAgICAg ICBhc2VlZAotICAgICAgICAgICAgICAgICAgICAgIGFsaXN0KSkpCi0gICAgICAgICAgICAgICBh c2VlZAotICAgICAgICAgICAgICAgYWxpc3RzKSkpKSkpKQorICAgIChpZiAocGFpcj8gcGFpcikK KyAgICAgIChhY29ucyBrZXkgKHByb2MgKGNkciBwYWlyKSkgcmVzdCkKKyAgICAgIGFsaXN0KSkp CiAKLTs7IFBvc3NpYmx5IHVzZWZ1bCBoZWxwZXIgZnVuY3Rpb25zOgotOzsgKGRlZmluZSAobmV3 ZXN0IGtleSB2YWwwIHZhbCkgdmFsKQotOzsgKGRlZmluZSAodW5rZXllZC0+a2V5ZWQgcHJvYykg KGxhbWJkYSAoX2tleSB2YWwwIHZhbCkgKHByb2MgdmFsMCB2YWwpKSkKLQotDAogOzs7CiA7Ozsg UGhhc2VzLgogOzs7CkBAIC0xNDIsOCArOTAsOCBAQCAoZGVmaW5lIChzZXQtaG9tZSAuIF8pCiAK IChkZWZpbmUgKG1vZHVsZS1uYW1lIG1vZHVsZSkKICAgKGxldCogKChwYWNrYWdlLmpzb24gKHN0 cmluZy1hcHBlbmQgbW9kdWxlICIvcGFja2FnZS5qc29uIikpCi0gICAgICAgICAocGFja2FnZS1t ZXRhIChjYWxsLXdpdGgtaW5wdXQtZmlsZSBwYWNrYWdlLmpzb24gcmVhZC1qc29uKSkpCi0gICAg KGpzb2JqZWN0LXJlZiBwYWNrYWdlLW1ldGEgIm5hbWUiKSkpCisgICAgICAgICAocGFja2FnZS1t ZXRhIChjYWxsLXdpdGgtaW5wdXQtZmlsZSBwYWNrYWdlLmpzb24ganNvbi0+c2NtKSkpCisgICAg KGFzc29jLXJlZiBwYWNrYWdlLW1ldGEgIm5hbWUiKSkpCiAKIChkZWZpbmUgKGluZGV4LW1vZHVs ZXMgaW5wdXQtcGF0aHMpCiAgIChkZWZpbmUgKGxpc3QtbW9kdWxlcyBkaXJlY3RvcnkpCkBAIC0x NjcsNDkgKzExNSw1OSBAQCAoZGVmaW5lKiAocGF0Y2gtZGVwZW5kZW5jaWVzICM6a2V5IGlucHV0 cyAjOmFsbG93LW90aGVyLWtleXMpCiAKICAgKGRlZmluZSBpbmRleCAoaW5kZXgtbW9kdWxlcyAo bWFwIGNkciBpbnB1dHMpKSkKIAotICAoZGVmaW5lIHJlc29sdmUtZGVwZW5kZW5jaWVzCi0gICAg KG1hdGNoLWxhbWJkYQotICAgICAgKCgnQCAuIGFsaXN0KQotICAgICAgIChjb25zICdAIChtYXAg KG1hdGNoLWxhbWJkYQotICAgICAgICAgICAgICAgICAgICAgICAoKGtleSAuIHZhbHVlKQotICAg ICAgICAgICAgICAgICAgICAgICAgKGNvbnMga2V5IChoYXNoLXJlZiBpbmRleCBrZXkgdmFsdWUp KSkpCi0gICAgICAgICAgICAgICAgICAgICBhbGlzdCkpKSkpCisgIChkZWZpbmUgKHJlc29sdmUt ZGVwZW5kZW5jaWVzIGRlcGVuZGVuY2llcykKKyAgICAobWFwCisgICAgICAobWF0Y2gtbGFtYmRh CisgICAgICAgICgoZGVwZW5kZW5jeSAuIHZlcnNpb24pCisgICAgICAgICAgKGNvbnMgZGVwZW5k ZW5jeSAoaGFzaC1yZWYgaW5kZXggZGVwZW5kZW5jeSB2ZXJzaW9uKSkpKQorICAgICAgZGVwZW5k ZW5jaWVzKSkKIAotICAod2l0aC1hdG9taWMtanNvbi1maWxlLXJlcGxhY2VtZW50ICJwYWNrYWdl Lmpzb24iCisgICh3aXRoLWF0b21pYy1qc29uLWZpbGUtcmVwbGFjZW1lbnQKICAgICAobGFtYmRh IChwa2ctbWV0YSkKLSAgICAgIChqc29iamVjdC11cGRhdGUqCi0gICAgICAgcGtnLW1ldGEKLSAg ICAgICBgKCJkZXZEZXBlbmRlbmNpZXMiICxyZXNvbHZlLWRlcGVuZGVuY2llcyAoQCkpCi0gICAg ICAgYCgiZGVwZW5kZW5jaWVzIiAsKGxhbWJkYSAoZGVwcykKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgIChyZXNvbHZlLWRlcGVuZGVuY2llcwotICAgICAgICAgICAgICAgICAgICAgICAgICAg IChqc29iamVjdC11bmlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChr IGEgYikgYikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGpzb2JqZWN0LXJlZiBwa2ct bWV0YSAicGVlckRlcGVuZGVuY2llcyIgJyhAKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZGVwcykpKQotICAgICAgICAgKEApKSkpKQorICAgICAgKGZvbGQKKyAgICAgICAgKGxhbWJk YSAocHJvYyBwa2ctbWV0YSkgKHByb2MgcGtnLW1ldGEpKQorICAgICAgICBwa2ctbWV0YQorICAg ICAgICAobGlzdAorICAgICAgICAgIChsYW1iZGEgKHBrZy1tZXRhKQorICAgICAgICAgICAgKGFs aXN0LXVwZGF0ZSBwa2ctbWV0YSAiZGV2RGVwZW5kZW5jaWVzIiByZXNvbHZlLWRlcGVuZGVuY2ll cykpCisgICAgICAgICAgKGxhbWJkYSAocGtnLW1ldGEpCisgICAgICAgICAgICAoYXNzb2Mtc2V0 IQorICAgICAgICAgICAgICBwa2ctbWV0YQorICAgICAgICAgICAgICAiZGVwZW5kZW5jaWVzIgor ICAgICAgICAgICAgICAocmVzb2x2ZS1kZXBlbmRlbmNpZXMKKyAgICAgICAgICAgICAgICA7IENv bWJpbmVkICJwZWVyRGVwZW5kZW5jaWVzIiBhbmQgImRlcGVuZGVuY2llcyIgZGVwZW5kZW5jaWVz CisgICAgICAgICAgICAgICAgOyB3aXRoICJkZXBlbmRlbmNpZXMiIHRha2luZyBwcmVjZWRlbnQu CisgICAgICAgICAgICAgICAgKGZvbGQKKyAgICAgICAgICAgICAgICAgIChsYW1iZGEgKGRlcGVu ZGVuY3kgZGVwZW5kZW5jaWVzKQorICAgICAgICAgICAgICAgICAgICAoYXBwbHkgYXNzb2Mtc2V0 ISBkZXBlbmRlbmNpZXMgZGVwZW5kZW5jeSkpCisgICAgICAgICAgICAgICAgICAoYXNzb2MtcmVm KiBwa2ctbWV0YSAicGVlckRlcGVuZGVuY2llcyIgJygpKQorICAgICAgICAgICAgICAgICAgKGFz c29jLXJlZiogcGtnLW1ldGEgImRlcGVuZGVuY2llcyIgJygpKSkpKSkpKSkpCiAgICN0KQogCi0o ZGVmaW5lIChkZWxldGUtZGVwZW5kZW5jaWVzIGFic2VudCkKKyhkZWZpbmUgKGRlbGV0ZS1kZXBl bmRlbmNpZXMgZGVwZW5kZW5jaWVzLXRvLXJlbW92ZSkKICAgIlJld3JpdGUgJ3BhY2thZ2UuanNv bicgdG8gYWxsb3cgdGhlIGJ1aWxkIHRvIHByb2NlZWQgd2l0aG91dCBwYWNrYWdlcwotbGlzdGVk IGluIEFCU0VOVCwgYSBsaXN0IG9mIHN0cmluZ3MgbmFtaW5nIG5wbSBwYWNrYWdlcy4KK2xpc3Rl ZCBpbiAnZGVwZW5kZW5jaWVzLXRvLXJlbW92ZScsIGEgbGlzdCBvZiBzdHJpbmdzIG5hbWluZyBu cG0gcGFja2FnZXMuCiAKIFRvIHByZXZlbnQgdGhlIGRlbGV0ZWQgZGVwZW5kZW5jaWVzIGZyb20g YmVpbmcgcmVpbnRyb2R1Y2VkLCB1c2UgdGhpcyBmdW5jdGlvbgogb25seSBhZnRlciB0aGUgJ3Bh dGNoLWRlcGVuZGVuY2llcycgcGhhc2UuIgotICAoZGVmaW5lIGRlbGV0ZS1mcm9tLWpzb2JqZWN0 Ci0gICAgKG1hdGNoLWxhbWJkYQotICAgICAgKCgnQCAuIGFsaXN0KQotICAgICAgIChjb25zICdA IChmaWx0ZXIgKG1hdGNoLWxhbWJkYQotICAgICAgICAgICAgICAgICAgICAgICAgICAoKGsgLiBf KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAobWVtYmVyIGsgYWJzZW50KSkpKQot ICAgICAgICAgICAgICAgICAgICAgICAgYWxpc3QpKSkpKQotCi0gICh3aXRoLWF0b21pYy1qc29u LWZpbGUtcmVwbGFjZW1lbnQgInBhY2thZ2UuanNvbiIKKyAgKHdpdGgtYXRvbWljLWpzb24tZmls ZS1yZXBsYWNlbWVudAogICAgIChsYW1iZGEgKHBrZy1tZXRhKQotICAgICAgKGpzb2JqZWN0LXVw ZGF0ZSoKLSAgICAgICBwa2ctbWV0YQotICAgICAgIGAoImRldkRlcGVuZGVuY2llcyIgLGRlbGV0 ZS1mcm9tLWpzb2JqZWN0IChAKSkKLSAgICAgICBgKCJkZXBlbmRlbmNpZXMiICxkZWxldGUtZnJv bS1qc29iamVjdCAoQCkpCi0gICAgICAgYCgicGVlckRlcGVuZGVuY2llcyIgLGRlbGV0ZS1mcm9t LWpzb2JqZWN0IChAKSkpKSkpCisgICAgICAoZm9sZAorICAgICAgICAobGFtYmRhIChkZXBlbmRl bmN5LWtleSBwa2ctbWV0YSkKKyAgICAgICAgICAoYWxpc3QtdXBkYXRlCisgICAgICAgICAgICBw a2ctbWV0YQorICAgICAgICAgICAgZGVwZW5kZW5jeS1rZXkKKyAgICAgICAgICAgIChsYW1iZGEg KGRlcGVuZGVuY2llcykKKyAgICAgICAgICAgICAgKHJlbW92ZQorICAgICAgICAgICAgICAgIChs YW1iZGEgKGRlcGVuZGVuY3kpCisgICAgICAgICAgICAgICAgICAobWVtYmVyIChjYXIgZGVwZW5k ZW5jeSkgZGVwZW5kZW5jaWVzLXRvLXJlbW92ZSkpCisgICAgICAgICAgICAgICAgZGVwZW5kZW5j aWVzKSkpKQorICAgICAgICBwa2ctbWV0YQorICAgICAgICAobGlzdAorICAgICAgICAgICJkZXZE ZXBlbmRlbmNpZXMiCisgICAgICAgICAgImRlcGVuZGVuY2llcyIKKyAgICAgICAgICAicGVlckRl cGVuZGVuY2llcyIKKyAgICAgICAgICAib3B0aW9uYWxEZXBlbmRlbmNpZXMiKSkpKSkKIAogKGRl ZmluZSogKGRlbGV0ZS1sb2NrZmlsZXMgIzprZXkgaW5wdXRzICM6YWxsb3ctb3RoZXIta2V5cykK ICAgIkRlbGV0ZSAncGFja2FnZS1sb2NrLmpzb24nLCAneWFybi5sb2NrJywgYW5kICducG0tc2hy aW5rd3JhcC5qc29uJywgaWYgdGhleQpAQCAtMjI4LDggKzE4Niw4IEBAIChkZWZpbmUqIChjb25m aWd1cmUgIzprZXkgb3V0cHV0cyBpbnB1dHMgIzphbGxvdy1vdGhlci1rZXlzKQogICAgICN0KSkK IAogKGRlZmluZSogKGJ1aWxkICM6a2V5IGlucHV0cyAjOmFsbG93LW90aGVyLWtleXMpCi0gIChs ZXQgKChwYWNrYWdlLW1ldGEgKGNhbGwtd2l0aC1pbnB1dC1maWxlICJwYWNrYWdlLmpzb24iIHJl YWQtanNvbikpKQotICAgIChpZiAoanNvYmplY3QtcmVmIChqc29iamVjdC1yZWYgcGFja2FnZS1t ZXRhICJzY3JpcHRzIiAnKEApKSAiYnVpbGQiICNmKQorICAobGV0ICgocGFja2FnZS1tZXRhIChj YWxsLXdpdGgtaW5wdXQtZmlsZSAicGFja2FnZS5qc29uIiBqc29uLT5zY20pKSkKKyAgICAoaWYg KGFzc29jLXJlZiogKGFzc29jLXJlZiogcGFja2FnZS1tZXRhICJzY3JpcHRzIiAnKCkpICJidWls ZCIgI2YpCiAgICAgICAgIChsZXQgKChucG0gKHN0cmluZy1hcHBlbmQgKGFzc29jLXJlZiBpbnB1 dHMgIm5vZGUiKSAiL2Jpbi9ucG0iKSkpCiAgICAgICAgICAgKGludm9rZSBucG0gInJ1biIgImJ1 aWxkIikpCiAgICAgICAgIChmb3JtYXQgI3QgInRoZXJlIGlzIG5vIGJ1aWxkIHNjcmlwdCB0byBy dW5+JSIpKQpAQCAtMzAxLDIyICsyNTksMjAgQEAgKGRlZmluZSogKGF2b2lkLW5vZGUtZ3lwLXJl YnVpbGQgIzprZXkgb3V0cHV0cyAjOmFsbG93LW90aGVyLWtleXMpCiAgIDs7IGV2ZW4gbmVlZCB0 byBvdmVyd3JpdGUgdGhpcyBmaWxlLiAgVGhlcmVmb3JlLCBsZXQncyB1c2Ugc29tZSBoZWxwZXJz CiAgIDs7IHRoYXQgd2UnZCBvdGhlcndpc2Ugbm90IG5lZWQuCiAgIChkZWZpbmUgcGtnLW1ldGEK LSAgICAoY2FsbC13aXRoLWlucHV0LWZpbGUgaW5zdGFsbGVkLXBhY2thZ2UuanNvbiByZWFkLWpz b24pKQorICAgIChjYWxsLXdpdGgtaW5wdXQtZmlsZSBpbnN0YWxsZWQtcGFja2FnZS5qc29uIGpz b24tPnNjbSkpCiAgIChkZWZpbmUgc2NyaXB0cwotICAgIChqc29iamVjdC1yZWYgcGtnLW1ldGEg InNjcmlwdHMiICcoQCkpKQotICAoZGVmaW5lIChqc29iamVjdC1zZXQganMga2V5IHZhbCkKLSAg ICAoanNvYmplY3QtdXBkYXRlKiBqcyAobGlzdCBrZXkgKGNvbnN0IHZhbCkpKSkKKyAgICAoYXNz b2MtcmVmKiBwa2ctbWV0YSAic2NyaXB0cyIgJygpKSkKIAotICAod2hlbiAoZXF1YWw/ICJub2Rl LWd5cCByZWJ1aWxkIiAoanNvYmplY3QtcmVmIHNjcmlwdHMgImluc3RhbGwiICNmKSkKKyAgKHdo ZW4gKGVxdWFsPyAibm9kZS1neXAgcmVidWlsZCIgKGFzc29jLXJlZiogc2NyaXB0cyAiaW5zdGFs bCIgI2YpKQogICAgIChjYWxsLXdpdGgtb3V0cHV0LWZpbGUgaW5zdGFsbGVkLXBhY2thZ2UuanNv bgogICAgICAgKGxhbWJkYSAob3V0KQotICAgICAgICAod3JpdGUtanNvbgotICAgICAgICAgKGpz b2JqZWN0LXNldCBwa2ctbWV0YQotICAgICAgICAgICAgICAgICAgICAgICAic2NyaXB0cyIKLSAg ICAgICAgICAgICAgICAgICAgICAgKGpzb2JqZWN0LXNldCBzY3JpcHRzCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgImluc3RhbGwiCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgImVjaG8gR3VpeDogYXZvaWRpbmcgbm9kZS1neXAgcmVidWlsZCIpKQot ICAgICAgICAgb3V0KSkpKSkKKyAgICAgICAgKHNjbS0+anNvbgorICAgICAgICAgIChhc3NvYy1z ZXQhIHBrZy1tZXRhCisgICAgICAgICAgICAgICAgICAgICAgInNjcmlwdHMiCisgICAgICAgICAg ICAgICAgICAgICAgKGFzc29jLXNldCEgc2NyaXB0cworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJpbnN0YWxsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJl Y2hvIEd1aXg6IGF2b2lkaW5nIG5vZGUtZ3lwIHJlYnVpbGQiKSkKKyAgICAgICAgICBvdXQpKSkp KQogCiAoZGVmaW5lICVzdGFuZGFyZC1waGFzZXMKICAgKG1vZGlmeS1waGFzZXMgZ251OiVzdGFu ZGFyZC1waGFzZXMKCmJhc2UtY29tbWl0OiBlMTZjZGNmMzdkODIyM2IzNjM0ZWM1ZTY1ODM1NmMz YjdmMTU0ODU5Ci0tIAoyLjQ2LjAKCg== --0000000000001eb841062a2c5a1f--
guix-patches@HIDDEN
:bug#74900
; Package guix-patches
.
Full text available.Received: (at 74900) by debbugs.gnu.org; 15 Dec 2024 21:43:09 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Dec 15 16:43:09 2024 Received: from localhost ([127.0.0.1]:52423 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tMwOI-00051J-DT for submit <at> debbugs.gnu.org; Sun, 15 Dec 2024 16:43:08 -0500 Received: from mail-vs1-f49.google.com ([209.85.217.49]:60646) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <d.khodabakhsh@HIDDEN>) id 1tMwOE-00050h-0m for 74900 <at> debbugs.gnu.org; Sun, 15 Dec 2024 16:43:05 -0500 Received: by mail-vs1-f49.google.com with SMTP id ada2fe7eead31-4b24d969db1so465936137.0 for <74900 <at> debbugs.gnu.org>; Sun, 15 Dec 2024 13:43:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1734298916; x=1734903716; darn=debbugs.gnu.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=aPPXPBUkKv2XVk1Lu0C88aJaHe0U/icyBSnpqEzPbnE=; b=faRoFJdH6HRd7pirTwtYSjDoQbNi6VRIzfA/yB9/DFvxX6nLFd+YvB2dXqUKc6lWy3 JHsTWnnyxrUXayLfyVmeWsSiLxpkfkdKQyoOzC1U3ZudIcyVRmMA+l4diHsxRP6fXHsk uWlMXzLtq+CV3/Szl2ZsXsOYIJGHM9wGgRMRiA8KFEeVCgoDhMTOk5wW5tRki5m+2fJt Jn/vJrGTc967crtJgFA3OPpSXHmipbwM3nava2M5KohSTLLHY8RvN2l+ky/eKQ64V4S3 D+e+6eUgGEqNSRObDxmNvNnvNrK2adlYwfqoJ3Flnom3jYzjx/1fDwiZ2rkGFfpF6E3T +2/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1734298916; x=1734903716; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=aPPXPBUkKv2XVk1Lu0C88aJaHe0U/icyBSnpqEzPbnE=; b=WAPKtexuYLRb6h2VnJxElPpy4fvLIqellcr+jU3cdj7YqCcCHpO5fp+WYD8abQqnhj CKfE958R3VBOcNj0ZYDyf3jEgFprhOeBl7i2h8t0sQOGoNtHX+nFcdFPwjp+sEtLvpMQ fSkGMEL0ftpeOfOKix2DXCHaJgLcqUWrpwDeGPOMUNoRNA3t3+jyd1Y2GDHdHkaeu7if iIn3Ni+O14TpdWl6v/vTOat5c7MKhfz0HHta8ri091hGHqDto+mZ6LoDdQz5z3KRdWsS qaqzqubXe911+D3wBzlUcPzloMD0t6/H7ELVoiDWzZ3Mz5qrgucUkfIbwqEC8eaFex0m Wc2Q== X-Gm-Message-State: AOJu0YwY8mjhhAE/cIcVGt0k1ofICYJ4tkSpGCm11O/JDnCQKkQHxaez +TlKrDTw7QQmK7ysw27elWeOzoH3sUMtVGvh8YmjAixCpWSyOxA9aOq9N0MNkrQK28N7j4pHTtU ulrmD+lIyeu+T9u3yOep8/niPmsQMUhR8 X-Gm-Gg: ASbGnculIa/7ykueP+uTQvoou1mgQuLRKsRevm3uUHVsuRGFr15lkT70fOzrd9UfRwR ZmFYiSe4ryygyCuSt+1A0IH5OezjeUtJ3QRwo4g== X-Google-Smtp-Source: AGHT+IFr19K5TkiMUXBK21SRW5+o1012tpWSGyHSMTSSJBQJA/03y3ctd3uWpRzx19SBTD0oedg48CyQgBi4A/WOnDY= X-Received: by 2002:a05:6102:4b13:b0:4b2:48cc:5c5a with SMTP id ada2fe7eead31-4b25dccbf77mr10224797137.15.1734298915594; Sun, 15 Dec 2024 13:41:55 -0800 (PST) MIME-Version: 1.0 From: Daniel Khodabakhsh <d.khodabakhsh@HIDDEN> Date: Sun, 15 Dec 2024 21:41:44 +0000 Message-ID: <CAADuFn++tHWy7CAzNv4TP3FCF4AGwMPeq1MDBGeH11Q9zcDxAw@HIDDEN> Subject: To: 74900 <at> debbugs.gnu.org Content-Type: multipart/mixed; boundary="000000000000ccd36f062955ee49" X-Spam-Score: 2.0 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Sorry went over the line width limit in my diff below, here it is again: This change replaces the use of (guix build json) with (json) for the node ecosystem. Since guile-json is a dependency of Guix, and it's used elsewhere in the project, it makes sense to use this inste [...] Content analysis details: (2.0 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED RBL: ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. [209.85.217.49 listed in sa-trusted.bondedsender.org] 0.0 RCVD_IN_VALIDITY_RPBL_BLOCKED RBL: ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. [209.85.217.49 listed in bl.score.senderscore.com] 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (d.khodabakhsh[at]gmail.com) -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [209.85.217.49 listed in wl.mailspike.net] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [209.85.217.49 listed in list.dnswl.org] 2.0 BLANK_SUBJECT Subject is present but empty X-Debbugs-Envelope-To: 74900 X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: 1.0 (+) --000000000000ccd36f062955ee49 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Sorry went over the line width limit in my diff below, here it is again: This change replaces the use of (guix build json) with (json) for the node ecosystem. Since guile-json is a dependency of Guix, and it's used elsewhere in the project, it makes sense to use this instead of rolling our own JSON implementation with (guix build json). This is one step to move away from (guix build json), there will be other changes to remove the other uses of it. Signed-off-by: Daniel Khodabakhsh <d.khodabakhsh@HIDDEN> Change-Id: I0c86b3039eb2f50a19f9d9650f5a73b3a473ad37 --- gnu/packages/node-xyz.scm | 148 +++++++++++-------------- guix/build-system/node.scm | 6 +- guix/build/node-build-system.scm | 181 ++++++++++++------------------- 3 files changed, 140 insertions(+), 195 deletions(-) diff --git a/gnu/packages/node-xyz.scm b/gnu/packages/node-xyz.scm index cf6f50e3ce..decfb50a66 100644 --- a/gnu/packages/node-xyz.scm +++ b/gnu/packages/node-xyz.scm @@ -7,6 +7,7 @@ ;;; Copyright =C2=A9 2021 Dhruvin Gandhi <contact@HIDDEN> ;;; Copyright =C2=A9 2022 Nicolas Graves <ngraves@HIDDEN> ;;; Copyright =C2=A9 2023 Jelle Licht <jlicht@HIDDEN> +;;; Copyright =C2=A9 2024 Daniel Khodabakhsh <d.khodabakhsh@HIDDEN> ;;; ;;; This file is part of GNU Guix. ;;; @@ -24,14 +25,14 @@ ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. (define-module (gnu packages node-xyz) - #:use-module ((guix licenses) #:prefix license:) #:use-module (gnu packages sqlite) #:use-module (gnu packages python) #:use-module (gnu packages web) + #:use-module (guix build-system node) #:use-module (guix gexp) - #:use-module (guix packages) #:use-module (guix git-download) - #:use-module (guix build-system node)) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages)) ;;; ;;; Please: Try to add new module packages in alphabetic order. @@ -69,19 +70,17 @@ (define-public node-acorn ;; it would try to use the build environment and would block = the ;; automatic building by other packages making use of node-ac= orn. ;; TODO: Add utility function - (with-atomic-json-file-replacement "package.json" - (match-lambda - (('@ . pkg-meta-alist) - (cons '@ (map (match-lambda - (("scripts" @ . scripts-alist) - `("scripts" @ ,@(filter (match-lambda - (("prepare" .= _) - #f) - (_ - #t)) - scripts-alist))= ) - (other other)) - pkg-meta-alist))))))) + (with-atomic-json-file-replacement (lambda (pkg-meta-alist) + (map + (match-lambda + (("scripts" . scripts-alist) + (cons "scripts" (filter + (match-lambda + (("prepare" . _) #f) + (_ #t)) + scripts-alist))) + (other other)) + pkg-meta-alist))))) (replace 'build (lambda* (#:key inputs native-inputs #:allow-other-keys) (let ((esbuild (search-input-file (or native-inputs inputs) @@ -156,23 +155,17 @@ (define-public node-addon-api (lambda args (define new-test-script "echo stopping after pretest on Guix") - (with-atomic-json-file-replacement "package.json" - (match-lambda - (('@ . pkg-meta-alist) - (cons - '@ - (map (match-lambda - (("scripts" '@ . scripts-alist) - `("scripts" @ ,@(map (match-lambda - (("test" . _) - (cons "test" - new-test-script)) - (other - other)) - scripts-alist))) - (other - other)) - pkg-meta-alist)))))))))) + (with-atomic-json-file-replacement (lambda (pkg-meta-alist) + (map + (match-lambda + (("scripts" . scripts-alist) + (cons "scripts" (map + (match-lambda + (("test" . _) (cons "test" new-test-script)) + (other other)) + scripts-alist))) + (other other)) + pkg-meta-alist)))))))) (home-page "https://github.com/nodejs/node-addon-api") (synopsis "Node.js API (Node-API) header-only C++ wrappers") (description "This module contains header-only C++ wrapper classes whi= ch @@ -1221,22 +1214,19 @@ (define-public node-serialport-bindings "node-abi")))) (add-after 'chdir 'avoid-prebuild-install (lambda args - (with-atomic-json-file-replacement "package.json" - (match-lambda - (('@ . pkg-meta-alist) - (cons '@ (map (match-lambda - (("scripts" @ . scripts-alist) - `("scripts" @ ,@(filter (match-lambda - (("install" .= _) - #f) - (_ - #t)) - scripts-alist))= ) - (("gypfile" . _) - '("gypfile" . #f)) - (other - other)) - pkg-meta-alist)))))))) + (with-atomic-json-file-replacement (lambda (pkg-meta-alist) + (map + (match-lambda + (("scripts" . scripts-alist) + (cons "scripts" (filter + (match-lambda + (("install" . _) #f) + (_ #t)) + scripts-alist))) + (("gypfile" . _) + (cons "gypfile" #f)) + (other other)) + pkg-meta-alist)))))) #:tests? #f)) (synopsis "Abstract base class for Node SerialPort bindings") (description "Node SerialPort is a modular suite of Node.js packages f= or @@ -1522,39 +1512,33 @@ (define-public node-sqlite3 (substitute* ".npmignore" (("lib/binding") "#lib/binding # <- patched for Guix")) - (with-atomic-json-file-replacement "package.json" - (match-lambda - (('@ . pkg-meta-alist) - (match (assoc-ref pkg-meta-alist "binary") - (('@ . binary-alist) - ;; When it builds from source, node-pre-gyp supplies - ;; module_name and module_path based on the entries u= nder - ;; "binary" from "package.json", so this package's - ;; "binding.gyp" doesn't define them. Thus, we also n= eed - ;; to supply them. The GYP_DEFINES environment variab= le - ;; turns out to be the easiest way to make sure they = are - ;; propagated from npm to node-gyp to gyp. - (setenv "GYP_DEFINES" - (string-append - "module_name=3D" - (assoc-ref binary-alist "module_name") - " " - "module_path=3D" - (assoc-ref binary-alist "module_path"))))) - ;; We need to remove the install script from "package.js= on", - ;; as it would try to use node-pre-gyp and would block t= he - ;; automatic building performed by `npm install`. - (cons '@ (map (match-lambda - (("scripts" @ . scripts-alist) - `("scripts" @ ,@(filter (match-lambda - (("install" .= _) - #f) - (_ - #t)) - scripts-alist))= ) - (other - other)) - pkg-meta-alist)))))))))) + (with-atomic-json-file-replacement (lambda (pkg-meta-alist) + (let ((binary-alist (assoc-ref pkg-meta-alist "binary"))) + ;; When it builds from source, node-pre-gyp supplies + ;; module_name and module_path based on the entries under + ;; "binary" from "package.json", so this package's + ;; "binding.gyp" doesn't define them. Thus, we also need + ;; to supply them. The GYP_DEFINES environment variable + ;; turns out to be the easiest way to make sure they are + ;; propagated from npm to node-gyp to gyp. + (setenv "GYP_DEFINES" (string-append + "module_name=3D" + (assoc-ref binary-alist "module_name") + " module_path=3D" + (assoc-ref binary-alist "module_path")))) + ;; We need to remove the install script from "package.json"= , + ;; as it would try to use node-pre-gyp and would block the + ;; automatic building performed by `npm install`. + (map + (match-lambda + (("scripts" . scripts-alist) + (cons "scripts" (filter + (match-lambda + (("install" . _) #f) + (_ #t)) + scripts-alist))) + (other other)) + pkg-meta-alist)))))))) (home-page "https://github.com/mapbox/node-sqlite3") (synopsis "Node.js bindings for SQLite3") (description diff --git a/guix/build-system/node.scm b/guix/build-system/node.scm index 57fe5f6030..425b8cd9b3 100644 --- a/guix/build-system/node.scm +++ b/guix/build-system/node.scm @@ -4,6 +4,7 @@ ;;; Copyright =C2=A9 2021 Ludovic Court=C3=A8s <ludo@HIDDEN> ;;; Copyright =C2=A9 2021 Pierre Langlois <pierre.langlois@HIDDEN> ;;; Copyright =C2=A9 2021 Philip McGrath <philip@HIDDEN> +;;; Copyright =C2=A9 2024 Daniel Khodabakhsh <d.khodabakhsh@HIDDEN> ;;; ;;; This file is part of GNU Guix. ;;; @@ -36,7 +37,10 @@ (define-module (guix build-system node) (define %node-build-system-modules ;; Build-side modules imported by default. `((guix build node-build-system) - (guix build json) + (json) + (json builder) + (json parser) + (json record) ,@%default-gnu-imported-modules)) (define (default-node) diff --git a/guix/build/node-build-system.scm b/guix/build/node-build-syste= m.scm index fb23894bc1..46e0ddd71d 100644 --- a/guix/build/node-build-system.scm +++ b/guix/build/node-build-system.scm @@ -4,6 +4,7 @@ ;;; Copyright =C2=A9 2019, 2021 Timothy Sample <samplet@HIDDEN> ;;; Copyright =C2=A9 2021, 2022 Philip McGrath <philip@HIDDEN> ;;; Copyright =C2=A9 2022 Liliana Marie Prikler <liliana.prikler@HIDDEN= > +;;; Copyright =C2=A9 2024 Daniel Khodabakhsh <d.khodabakhsh@HIDDEN> ;;; ;;; This file is part of GNU Guix. ;;; @@ -23,10 +24,10 @@ (define-module (guix build node-build-system) #:use-module ((guix build gnu-build-system) #:prefix gnu:) #:use-module (guix build utils) - #:use-module (guix build json) #:use-module (ice-9 ftw) #:use-module (ice-9 regex) #:use-module (ice-9 match) + #:use-module (json) #:use-module (srfi srfi-1) #:use-module (srfi srfi-71) #:export (%standard-phases @@ -34,13 +35,14 @@ (define-module (guix build node-build-system) delete-dependencies node-build)) -(define (with-atomic-json-file-replacement file proc) +(define* (with-atomic-json-file-replacement proc + #:optional (file "package.json")) "Like 'with-atomic-file-replacement', but PROC is called with a single argument---the result of parsing FILE's contents as json---and should a va= lue to be written as json to the replacement FILE." (with-atomic-file-replacement file (lambda (in out) - (write-json (proc (read-json in)) out)))) + (scm->json (proc (json->scm in)) out)))) (define* (assoc-ref* alist key #:optional default) "Like assoc-ref, but return DEFAULT instead of #f if no value exists." @@ -48,10 +50,6 @@ (define* (assoc-ref* alist key #:optional default) (#f default) ((_ . value) value))) -(define* (jsobject-ref obj key #:optional default) - (match obj - (('@ . alist) (assoc-ref* alist key default)))) - (define* (alist-pop alist key #:optional (=3D equal?)) "Return two values, the first pair in ALIST with key KEY, and the other elements. Equality calls are made as (=3D KEY ALISTCAR)." @@ -63,67 +61,17 @@ (define* (alist-pop alist key #:optional (=3D equal?)) (values (car after) (append before (cdr after))) (values #f before)))) -(define* (alist-update alist key proc #:optional default (=3D equal?)) +(define* (alist-update alist key proc #:optional (=3D equal?)) "Return an association list like ALIST, but with KEY mapped to the resul= t of PROC applied to the first value found under the comparison (=3D KEY ALISTC= AR). -If no such value exists, use DEFAULT instead. +If no such value exists, return the list unchanged. Unlike acons, this removes the previous association of KEY (assuming it is unique), but the result may still share storage with ALIST." (let ((pair rest (alist-pop alist key =3D))) - (acons key - (proc (if (pair? pair) - (cdr pair) - default)) - rest))) - -(define (jsobject-update* js . updates) - "Return a json object like JS, but with all UPDATES applied. Each updat= e is -a list (KEY PROC [DEFAULT]), so that KEY is mapped to the result of PROC -applied to the value to which KEY is mapped in JS. If no such mapping exi= sts, -PROC is instead applied to DEFAULT, or to '#f' is no DEFAULT is specified. -The update takes place from left to right, so later UPDATERs will receive = the -values returned by earlier UPDATERs for the same KEY." - (match js - (('@ . alist) - (let loop ((alist alist) - (updates updates)) - (match updates - (() (cons '@ alist)) - (((key proc) . updates) - (loop (alist-update alist key proc #f equal?) updates)) - (((key proc default) . updates) - (loop (alist-update alist key proc default equal?) updates))))))= ) - -(define (jsobject-union combine seed . objects) - "Merge OBJECTS into SEED by applying (COMBINE KEY VAL0 VAL), where VAL0 -is the value found in the (possibly updated) SEED and VAL is the new value -found in one of the OBJECTS." - (match seed - (('@ . aseed) - (match objects - (() seed) - ((('@ . alists) ...) - (cons - '@ - (fold (lambda (alist aseed) - (if (null? aseed) alist - (fold - (match-lambda* - (((k . v) aseed) - (let ((pair tail (alist-pop alist k))) - (match pair - (#f (acons k v aseed)) - ((_ . v0) (acons k (combine k v0 v) aseed))))= )) - aseed - alist))) - aseed - alists))))))) + (if (pair? pair) + (acons key (proc (cdr pair)) rest) + alist))) -;; Possibly useful helper functions: -;; (define (newest key val0 val) val) -;; (define (unkeyed->keyed proc) (lambda (_key val0 val) (proc val0 val))) - - ;;; ;;; Phases. ;;; @@ -142,8 +90,8 @@ (define (set-home . _) (define (module-name module) (let* ((package.json (string-append module "/package.json")) - (package-meta (call-with-input-file package.json read-json))) - (jsobject-ref package-meta "name"))) + (package-meta (call-with-input-file package.json json->scm))) + (assoc-ref package-meta "name"))) (define (index-modules input-paths) (define (list-modules directory) @@ -167,49 +115,60 @@ (define* (patch-dependencies #:key inputs #:allow-other-keys) (define index (index-modules (map cdr inputs))) - (define resolve-dependencies - (match-lambda - (('@ . alist) - (cons '@ (map (match-lambda - ((key . value) - (cons key (hash-ref index key value)))) - alist))))) + (define (resolve-dependencies dependencies) + (map + (match-lambda + ((dependency . version) + (cons dependency (hash-ref index dependency version)))) + dependencies)) - (with-atomic-json-file-replacement "package.json" + (with-atomic-json-file-replacement (lambda (pkg-meta) - (jsobject-update* - pkg-meta - `("devDependencies" ,resolve-dependencies (@)) - `("dependencies" ,(lambda (deps) - (resolve-dependencies - (jsobject-union - (lambda (k a b) b) - (jsobject-ref pkg-meta "peerDependencies" '(@= )) - deps))) - (@))))) + (fold + (lambda (proc pkg-meta) (proc pkg-meta)) + pkg-meta + (list + (lambda (pkg-meta) + (alist-update pkg-meta "devDependencies" resolve-dependencies)= ) + (lambda (pkg-meta) + (assoc-set! + pkg-meta + "dependencies" + (resolve-dependencies + ; Combined "peerDependencies" and "dependencies" dependenc= ies + ; with "dependencies" taking precedent. + (fold + (lambda (dependency dependencies) + (apply assoc-set! dependencies dependency)) + (assoc-ref* pkg-meta "peerDependencies" '()) + (assoc-ref* pkg-meta "dependencies" '()) + )))))))) #t) -(define (delete-dependencies absent) +(define (delete-dependencies dependencies-to-remove) "Rewrite 'package.json' to allow the build to proceed without packages -listed in ABSENT, a list of strings naming npm packages. +listed in 'dependencies-to-remove', a list of strings naming npm packages. To prevent the deleted dependencies from being reintroduced, use this func= tion only after the 'patch-dependencies' phase." - (define delete-from-jsobject - (match-lambda - (('@ . alist) - (cons '@ (filter (match-lambda - ((k . _) - (not (member k absent)))) - alist))))) - - (with-atomic-json-file-replacement "package.json" + (with-atomic-json-file-replacement (lambda (pkg-meta) - (jsobject-update* - pkg-meta - `("devDependencies" ,delete-from-jsobject (@)) - `("dependencies" ,delete-from-jsobject (@)) - `("peerDependencies" ,delete-from-jsobject (@)))))) + (fold + (lambda (dependency-key pkg-meta) + (alist-update + pkg-meta + dependency-key + (lambda (dependencies) + (remove + (lambda (dependency) + (member (car dependency) dependencies-to-remove)) + dependencies)))) + pkg-meta + (list + "devDependencies" + "dependencies" + "peerDependencies" + "optionalDependencies"))))) (define* (delete-lockfiles #:key inputs #:allow-other-keys) "Delete 'package-lock.json', 'yarn.lock', and 'npm-shrinkwrap.json', if = they @@ -228,8 +187,8 @@ (define* (configure #:key outputs inputs #:allow-other-= keys) #t)) (define* (build #:key inputs #:allow-other-keys) - (let ((package-meta (call-with-input-file "package.json" read-json))) - (if (jsobject-ref (jsobject-ref package-meta "scripts" '(@)) "build" #= f) + (let ((package-meta (call-with-input-file "package.json" json->scm))) + (if (assoc-ref* (assoc-ref* package-meta "scripts" '()) "build" #f) (let ((npm (string-append (assoc-ref inputs "node") "/bin/npm"))) (invoke npm "run" "build")) (format #t "there is no build script to run~%")) @@ -301,22 +260,20 @@ (define* (avoid-node-gyp-rebuild #:key outputs #:allow-other-keys) ;; even need to overwrite this file. Therefore, let's use some helpers ;; that we'd otherwise not need. (define pkg-meta - (call-with-input-file installed-package.json read-json)) + (call-with-input-file installed-package.json json->scm)) (define scripts - (jsobject-ref pkg-meta "scripts" '(@))) - (define (jsobject-set js key val) - (jsobject-update* js (list key (const val)))) + (assoc-ref* pkg-meta "scripts" '())) - (when (equal? "node-gyp rebuild" (jsobject-ref scripts "install" #f)) + (when (equal? "node-gyp rebuild" (assoc-ref* scripts "install" #f)) (call-with-output-file installed-package.json (lambda (out) - (write-json - (jsobject-set pkg-meta - "scripts" - (jsobject-set scripts - "install" - "echo Guix: avoiding node-gyp rebuild= ")) - out))))) + (scm->json + (assoc-set! pkg-meta + "scripts" + (assoc-set! scripts + "install" + "echo Guix: avoiding node-gyp rebuild")) + out))))) (define %standard-phases (modify-phases gnu:%standard-phases base-commit: cfd4f56f75a20b6732d463180d211f796c9032e5 --=20 2.46.0 --000000000000ccd36f062955ee49 Content-Type: text/x-patch; charset="UTF-8"; name="0001-Replace-guix-build-json-with-json-in-node-build-syst.patch" Content-Disposition: attachment; filename="0001-Replace-guix-build-json-with-json-in-node-build-syst.patch" Content-Transfer-Encoding: base64 Content-ID: <f_m4q4sbju0> X-Attachment-Id: f_m4q4sbju0 RnJvbSA2OTQ4OWFjNjNmMzk3ODQ5ZDUxYmMyMDY1NDAyZWRiMWEwMWQwODQ2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgS2hvZGFiYWtoc2ggPGQua2hvZGFiYWtoc2hAZ21h aWwuY29tPgpEYXRlOiBTdW4sIDE1IERlYyAyMDI0IDExOjMwOjMzIC0wODAwClN1YmplY3Q6IFtQ QVRDSF0gUmVwbGFjZSAoZ3VpeCBidWlsZCBqc29uKSB3aXRoIChqc29uKSBpbiBub2RlIGJ1aWxk IHN5c3RlbQoKVGhpcyBjaGFuZ2UgcmVwbGFjZXMgdGhlIHVzZSBvZiAoZ3VpeCBidWlsZCBqc29u KSB3aXRoIChqc29uKSBmb3IgdGhlIG5vZGUgZWNvc3lzdGVtLgpTaW5jZSBndWlsZS1qc29uIGlz IGEgZGVwZW5kZW5jeSBvZiBHdWl4LCBhbmQgaXQncyB1c2VkIGVsc2V3aGVyZSBpbiB0aGUgcHJv amVjdCwgaXQgbWFrZXMgc2Vuc2UgdG8gdXNlIHRoaXMgaW5zdGVhZCBvZiByb2xsaW5nIG91ciBv d24gSlNPTiBpbXBsZW1lbnRhdGlvbiB3aXRoIChndWl4IGJ1aWxkIGpzb24pLgpUaGlzIGlzIG9u ZSBzdGVwIHRvIG1vdmUgYXdheSBmcm9tIChndWl4IGJ1aWxkIGpzb24pLCB0aGVyZSB3aWxsIGJl IG90aGVyIGNoYW5nZXMgdG8gcmVtb3ZlIHRoZSBvdGhlciB1c2VzIG9mIGl0LgoKU2lnbmVkLW9m Zi1ieTogRGFuaWVsIEtob2RhYmFraHNoIDxkLmtob2RhYmFraHNoQGdtYWlsLmNvbT4KQ2hhbmdl LUlkOiBJMGM4NmIzMDM5ZWIyZjUwYTE5ZjlkOTY1MGY1YTczYjNhNDczYWQzNwotLS0KIGdudS9w YWNrYWdlcy9ub2RlLXh5ei5zY20gICAgICAgIHwgMTQ4ICsrKysrKysrKysrLS0tLS0tLS0tLS0t LS0KIGd1aXgvYnVpbGQtc3lzdGVtL25vZGUuc2NtICAgICAgIHwgICA2ICstCiBndWl4L2J1aWxk L25vZGUtYnVpbGQtc3lzdGVtLnNjbSB8IDE4MSArKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0t LS0tCiAzIGZpbGVzIGNoYW5nZWQsIDE0MCBpbnNlcnRpb25zKCspLCAxOTUgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZ251L3BhY2thZ2VzL25vZGUteHl6LnNjbSBiL2dudS9wYWNrYWdlcy9u b2RlLXh5ei5zY20KaW5kZXggY2Y2ZjUwZTNjZS4uZGVjZmI1MGE2NiAxMDA2NDQKLS0tIGEvZ251 L3BhY2thZ2VzL25vZGUteHl6LnNjbQorKysgYi9nbnUvcGFja2FnZXMvbm9kZS14eXouc2NtCkBA IC03LDYgKzcsNyBAQAogOzs7IENvcHlyaWdodCDCqSAyMDIxIERocnV2aW4gR2FuZGhpIDxjb250 YWN0QGRocnV2aW4uZGV2PgogOzs7IENvcHlyaWdodCDCqSAyMDIyIE5pY29sYXMgR3JhdmVzIDxu Z3JhdmVzQG5ncmF2ZXMuZnI+CiA7OzsgQ29weXJpZ2h0IMKpIDIwMjMgSmVsbGUgTGljaHQgPGps aWNodEBmc2ZlLm9yZz4KKzs7OyBDb3B5cmlnaHQgwqkgMjAyNCBEYW5pZWwgS2hvZGFiYWtoc2gg PGQua2hvZGFiYWtoc2hAZ21haWwuY29tPgogOzs7CiA7OzsgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg R05VIEd1aXguCiA7OzsKQEAgLTI0LDE0ICsyNSwxNCBAQAogOzs7IGFsb25nIHdpdGggR05VIEd1 aXguICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiAKIChkZWZp bmUtbW9kdWxlIChnbnUgcGFja2FnZXMgbm9kZS14eXopCi0gICM6dXNlLW1vZHVsZSAoKGd1aXgg bGljZW5zZXMpICM6cHJlZml4IGxpY2Vuc2U6KQogICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdl cyBzcWxpdGUpCiAgICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIHB5dGhvbikKICAgIzp1c2Ut bW9kdWxlIChnbnUgcGFja2FnZXMgd2ViKQorICAjOnVzZS1tb2R1bGUgKGd1aXggYnVpbGQtc3lz dGVtIG5vZGUpCiAgICM6dXNlLW1vZHVsZSAoZ3VpeCBnZXhwKQotICAjOnVzZS1tb2R1bGUgKGd1 aXggcGFja2FnZXMpCiAgICM6dXNlLW1vZHVsZSAoZ3VpeCBnaXQtZG93bmxvYWQpCi0gICM6dXNl LW1vZHVsZSAoZ3VpeCBidWlsZC1zeXN0ZW0gbm9kZSkpCisgICM6dXNlLW1vZHVsZSAoKGd1aXgg bGljZW5zZXMpICM6cHJlZml4IGxpY2Vuc2U6KQorICAjOnVzZS1tb2R1bGUgKGd1aXggcGFja2Fn ZXMpKQogCiA7OzsKIDs7OyBQbGVhc2U6IFRyeSB0byBhZGQgbmV3IG1vZHVsZSBwYWNrYWdlcyBp biBhbHBoYWJldGljIG9yZGVyLgpAQCAtNjksMTkgKzcwLDE3IEBAIChkZWZpbmUtcHVibGljIG5v ZGUtYWNvcm4KICAgICAgICAgICAgICA7OyBpdCB3b3VsZCB0cnkgdG8gdXNlIHRoZSBidWlsZCBl bnZpcm9ubWVudCBhbmQgd291bGQgYmxvY2sgdGhlCiAgICAgICAgICAgICAgOzsgYXV0b21hdGlj IGJ1aWxkaW5nIGJ5IG90aGVyIHBhY2thZ2VzIG1ha2luZyB1c2Ugb2Ygbm9kZS1hY29ybi4KICAg ICAgICAgICAgICA7OyBUT0RPOiBBZGQgdXRpbGl0eSBmdW5jdGlvbgotICAgICAgICAgICAgICh3 aXRoLWF0b21pYy1qc29uLWZpbGUtcmVwbGFjZW1lbnQgInBhY2thZ2UuanNvbiIKLSAgICAgICAg ICAgICAgIChtYXRjaC1sYW1iZGEKLSAgICAgICAgICAgICAgICAgKCgnQCAuIHBrZy1tZXRhLWFs aXN0KQotICAgICAgICAgICAgICAgICAgKGNvbnMgJ0AgKG1hcCAobWF0Y2gtbGFtYmRhCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgic2NyaXB0cyIgQCAuIHNjcmlwdHMtYWxp c3QpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAoInNjcmlwdHMiIEAgLEAo ZmlsdGVyIChtYXRjaC1sYW1iZGEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoKCJwcmVwYXJlIiAuIF8pCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNmKQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChfCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICN0KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2NyaXB0cy1hbGlzdCkpKQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChvdGhlciBvdGhlcikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHBrZy1tZXRhLWFsaXN0KSkpKSkpKQorICAgICAgICAgICAgICh3aXRoLWF0b21pYy1qc29u LWZpbGUtcmVwbGFjZW1lbnQgKGxhbWJkYSAocGtnLW1ldGEtYWxpc3QpCisgICAgICAgICAgICAg ICAobWFwCisgICAgICAgICAgICAgICAgIChtYXRjaC1sYW1iZGEKKyAgICAgICAgICAgICAgICAg ICAoKCJzY3JpcHRzIiAuIHNjcmlwdHMtYWxpc3QpCisgICAgICAgICAgICAgICAgICAgICAoY29u cyAic2NyaXB0cyIgKGZpbHRlcgorICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2gtbGFtYmRh CisgICAgICAgICAgICAgICAgICAgICAgICAgKCgicHJlcGFyZSIgLiBfKSAjZikKKyAgICAgICAg ICAgICAgICAgICAgICAgICAoXyAjdCkpCisgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdHMt YWxpc3QpKSkKKyAgICAgICAgICAgICAgICAgICAob3RoZXIgb3RoZXIpKQorICAgICAgICAgICAg ICAgICBwa2ctbWV0YS1hbGlzdCkpKSkpCiAgICAgICAgICAocmVwbGFjZSAnYnVpbGQKICAgICAg ICAgICAgKGxhbWJkYSogKCM6a2V5IGlucHV0cyBuYXRpdmUtaW5wdXRzICM6YWxsb3ctb3RoZXIt a2V5cykKICAgICAgICAgICAgICAobGV0ICgoZXNidWlsZCAoc2VhcmNoLWlucHV0LWZpbGUgKG9y IG5hdGl2ZS1pbnB1dHMgaW5wdXRzKQpAQCAtMTU2LDIzICsxNTUsMTcgQEAgKGRlZmluZS1wdWJs aWMgbm9kZS1hZGRvbi1hcGkKICAgICAgICAgICAgKGxhbWJkYSBhcmdzCiAgICAgICAgICAgICAg KGRlZmluZSBuZXctdGVzdC1zY3JpcHQKICAgICAgICAgICAgICAgICJlY2hvIHN0b3BwaW5nIGFm dGVyIHByZXRlc3Qgb24gR3VpeCIpCi0gICAgICAgICAgICAgKHdpdGgtYXRvbWljLWpzb24tZmls ZS1yZXBsYWNlbWVudCAicGFja2FnZS5qc29uIgotICAgICAgICAgICAgICAgKG1hdGNoLWxhbWJk YQotICAgICAgICAgICAgICAgICAoKCdAIC4gcGtnLW1ldGEtYWxpc3QpCi0gICAgICAgICAgICAg ICAgICAoY29ucwotICAgICAgICAgICAgICAgICAgICdACi0gICAgICAgICAgICAgICAgICAgKG1h cCAobWF0Y2gtbGFtYmRhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICgoInNjcmlwdHMiICdA IC4gc2NyaXB0cy1hbGlzdCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGAoInNjcmlwdHMi IEAgLEAobWFwIChtYXRjaC1sYW1iZGEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKCgidGVzdCIgLiBfKQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnMgInRlc3QiCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXctdGVzdC1zY3JpcHQp KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3Ro ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90 aGVyKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNj cmlwdHMtYWxpc3QpKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKG90aGVyCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICBvdGhlcikpCi0gICAgICAgICAgICAgICAgICAgICAgICBwa2ct bWV0YS1hbGlzdCkpKSkpKSkpKSkKKyAgICAgICAgICAgICAod2l0aC1hdG9taWMtanNvbi1maWxl LXJlcGxhY2VtZW50IChsYW1iZGEgKHBrZy1tZXRhLWFsaXN0KQorICAgICAgICAgICAgICAgKG1h cAorICAgICAgICAgICAgICAgICAobWF0Y2gtbGFtYmRhCisgICAgICAgICAgICAgICAgICAgKCgi c2NyaXB0cyIgLiBzY3JpcHRzLWFsaXN0KQorICAgICAgICAgICAgICAgICAgICAgKGNvbnMgInNj cmlwdHMiIChtYXAKKyAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoLWxhbWJkYQorICAgICAg ICAgICAgICAgICAgICAgICAgICgoInRlc3QiIC4gXykgKGNvbnMgInRlc3QiIG5ldy10ZXN0LXNj cmlwdCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgKG90aGVyIG90aGVyKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgc2NyaXB0cy1hbGlzdCkpKQorICAgICAgICAgICAgICAgICAgIChvdGhl ciBvdGhlcikpCisgICAgICAgICAgICAgICAgIHBrZy1tZXRhLWFsaXN0KSkpKSkpKSkKICAgICAo aG9tZS1wYWdlICJodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUtYWRkb24tYXBpIikKICAg ICAoc3lub3BzaXMgIk5vZGUuanMgQVBJIChOb2RlLUFQSSkgaGVhZGVyLW9ubHkgQysrIHdyYXBw ZXJzIikKICAgICAoZGVzY3JpcHRpb24gIlRoaXMgbW9kdWxlIGNvbnRhaW5zIGhlYWRlci1vbmx5 IEMrKyB3cmFwcGVyIGNsYXNzZXMgd2hpY2gKQEAgLTEyMjEsMjIgKzEyMTQsMTkgQEAgKGRlZmlu ZS1wdWJsaWMgbm9kZS1zZXJpYWxwb3J0LWJpbmRpbmdzCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAibm9kZS1hYmkiKSkpKQogICAgICAgICAgKGFkZC1hZnRlciAnY2hkaXIg J2F2b2lkLXByZWJ1aWxkLWluc3RhbGwKICAgICAgICAgICAgKGxhbWJkYSBhcmdzCi0gICAgICAg ICAgICAgKHdpdGgtYXRvbWljLWpzb24tZmlsZS1yZXBsYWNlbWVudCAicGFja2FnZS5qc29uIgot ICAgICAgICAgICAgICAgKG1hdGNoLWxhbWJkYQotICAgICAgICAgICAgICAgICAoKCdAIC4gcGtn LW1ldGEtYWxpc3QpCi0gICAgICAgICAgICAgICAgICAoY29ucyAnQCAobWFwIChtYXRjaC1sYW1i ZGEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCJzY3JpcHRzIiBAIC4gc2Ny aXB0cy1hbGlzdCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCgic2NyaXB0 cyIgQCAsQChmaWx0ZXIgKG1hdGNoLWxhbWJkYQotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoImluc3RhbGwiIC4gXykKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg I2YpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKF8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgI3QpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRzLWFsaXN0KSkpCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKCgiZ3lwZmlsZSIgLiBfKQotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnKCJneXBmaWxlIiAuICNmKSkKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAob3RoZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg b3RoZXIpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwa2ctbWV0YS1hbGlzdCkp KSkpKSkpCisgICAgICAgICAgICAgKHdpdGgtYXRvbWljLWpzb24tZmlsZS1yZXBsYWNlbWVudCAo bGFtYmRhIChwa2ctbWV0YS1hbGlzdCkKKyAgICAgICAgICAgICAgIChtYXAKKyAgICAgICAgICAg ICAgICAgKG1hdGNoLWxhbWJkYQorICAgICAgICAgICAgICAgICAgICgoInNjcmlwdHMiIC4gc2Ny aXB0cy1hbGlzdCkKKyAgICAgICAgICAgICAgICAgICAgIChjb25zICJzY3JpcHRzIiAoZmlsdGVy CisgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaC1sYW1iZGEKKyAgICAgICAgICAgICAgICAg ICAgICAgICAoKCJpbnN0YWxsIiAuIF8pICNmKQorICAgICAgICAgICAgICAgICAgICAgICAgIChf ICN0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0cy1hbGlzdCkpKQorICAgICAgICAg ICAgICAgICAgICgoImd5cGZpbGUiIC4gXykKKyAgICAgICAgICAgICAgICAgICAgIChjb25zICJn eXBmaWxlIiAjZikpCisgICAgICAgICAgICAgICAgICAgKG90aGVyIG90aGVyKSkKKyAgICAgICAg ICAgICAgICAgcGtnLW1ldGEtYWxpc3QpKSkpKSkKICAgICAgICAjOnRlc3RzPyAjZikpCiAgICAg KHN5bm9wc2lzICJBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBOb2RlIFNlcmlhbFBvcnQgYmluZGlu Z3MiKQogICAgIChkZXNjcmlwdGlvbiAiTm9kZSBTZXJpYWxQb3J0IGlzIGEgbW9kdWxhciBzdWl0 ZSBvZiBOb2RlLmpzIHBhY2thZ2VzIGZvcgpAQCAtMTUyMiwzOSArMTUxMiwzMyBAQCAoZGVmaW5l LXB1YmxpYyBub2RlLXNxbGl0ZTMKICAgICAgICAgICAgICAoc3Vic3RpdHV0ZSogIi5ucG1pZ25v cmUiCiAgICAgICAgICAgICAgICAoKCJsaWIvYmluZGluZyIpCiAgICAgICAgICAgICAgICAgIiNs aWIvYmluZGluZyAjIDwtIHBhdGNoZWQgZm9yIEd1aXgiKSkKLSAgICAgICAgICAgICAod2l0aC1h dG9taWMtanNvbi1maWxlLXJlcGxhY2VtZW50ICJwYWNrYWdlLmpzb24iCi0gICAgICAgICAgICAg ICAobWF0Y2gtbGFtYmRhCi0gICAgICAgICAgICAgICAgICgoJ0AgLiBwa2ctbWV0YS1hbGlzdCkK LSAgICAgICAgICAgICAgICAgIChtYXRjaCAoYXNzb2MtcmVmIHBrZy1tZXRhLWFsaXN0ICJiaW5h cnkiKQotICAgICAgICAgICAgICAgICAgICAoKCdAIC4gYmluYXJ5LWFsaXN0KQotICAgICAgICAg ICAgICAgICAgICAgOzsgV2hlbiBpdCBidWlsZHMgZnJvbSBzb3VyY2UsIG5vZGUtcHJlLWd5cCBz dXBwbGllcwotICAgICAgICAgICAgICAgICAgICAgOzsgbW9kdWxlX25hbWUgYW5kIG1vZHVsZV9w YXRoIGJhc2VkIG9uIHRoZSBlbnRyaWVzIHVuZGVyCi0gICAgICAgICAgICAgICAgICAgICA7OyAi YmluYXJ5IiBmcm9tICJwYWNrYWdlLmpzb24iLCBzbyB0aGlzIHBhY2thZ2UncwotICAgICAgICAg ICAgICAgICAgICAgOzsgImJpbmRpbmcuZ3lwIiBkb2Vzbid0IGRlZmluZSB0aGVtLiBUaHVzLCB3 ZSBhbHNvIG5lZWQKLSAgICAgICAgICAgICAgICAgICAgIDs7IHRvIHN1cHBseSB0aGVtLiBUaGUg R1lQX0RFRklORVMgZW52aXJvbm1lbnQgdmFyaWFibGUKLSAgICAgICAgICAgICAgICAgICAgIDs7 IHR1cm5zIG91dCB0byBiZSB0aGUgZWFzaWVzdCB3YXkgdG8gbWFrZSBzdXJlIHRoZXkgYXJlCi0g ICAgICAgICAgICAgICAgICAgICA7OyBwcm9wYWdhdGVkIGZyb20gbnBtIHRvIG5vZGUtZ3lwIHRv IGd5cC4KLSAgICAgICAgICAgICAgICAgICAgIChzZXRlbnYgIkdZUF9ERUZJTkVTIgotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIm1vZHVsZV9uYW1lPSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChhc3NvYy1yZWYgYmluYXJ5LWFsaXN0ICJtb2R1bGVfbmFtZSIpCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2R1bGVf cGF0aD0iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXNzb2MtcmVmIGJpbmFyeS1h bGlzdCAibW9kdWxlX3BhdGgiKSkpKSkKLSAgICAgICAgICAgICAgICAgIDs7IFdlIG5lZWQgdG8g cmVtb3ZlIHRoZSBpbnN0YWxsIHNjcmlwdCBmcm9tICJwYWNrYWdlLmpzb24iLAotICAgICAgICAg ICAgICAgICAgOzsgYXMgaXQgd291bGQgdHJ5IHRvIHVzZSBub2RlLXByZS1neXAgYW5kIHdvdWxk IGJsb2NrIHRoZQotICAgICAgICAgICAgICAgICAgOzsgYXV0b21hdGljIGJ1aWxkaW5nIHBlcmZv cm1lZCBieSBgbnBtIGluc3RhbGxgLgotICAgICAgICAgICAgICAgICAgKGNvbnMgJ0AgKG1hcCAo bWF0Y2gtbGFtYmRhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgic2NyaXB0 cyIgQCAuIHNjcmlwdHMtYWxpc3QpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGAoInNjcmlwdHMiIEAgLEAoZmlsdGVyIChtYXRjaC1sYW1iZGEKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCJpbnN0YWxsIiAu IF8pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICNmKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChfCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICN0KSkKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0cy1hbGlzdCkpKQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvdGhlcgotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBvdGhlcikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBrZy1tZXRhLWFsaXN0KSkpKSkpKSkpKQorICAgICAgICAgICAgICh3aXRoLWF0b21pYy1qc29u LWZpbGUtcmVwbGFjZW1lbnQgKGxhbWJkYSAocGtnLW1ldGEtYWxpc3QpCisgICAgICAgICAgICAg ICAobGV0ICgoYmluYXJ5LWFsaXN0IChhc3NvYy1yZWYgcGtnLW1ldGEtYWxpc3QgImJpbmFyeSIp KSkKKyAgICAgICAgICAgICAgICAgOzsgV2hlbiBpdCBidWlsZHMgZnJvbSBzb3VyY2UsIG5vZGUt cHJlLWd5cCBzdXBwbGllcworICAgICAgICAgICAgICAgICA7OyBtb2R1bGVfbmFtZSBhbmQgbW9k dWxlX3BhdGggYmFzZWQgb24gdGhlIGVudHJpZXMgdW5kZXIKKyAgICAgICAgICAgICAgICAgOzsg ImJpbmFyeSIgZnJvbSAicGFja2FnZS5qc29uIiwgc28gdGhpcyBwYWNrYWdlJ3MKKyAgICAgICAg ICAgICAgICAgOzsgImJpbmRpbmcuZ3lwIiBkb2Vzbid0IGRlZmluZSB0aGVtLiBUaHVzLCB3ZSBh bHNvIG5lZWQKKyAgICAgICAgICAgICAgICAgOzsgdG8gc3VwcGx5IHRoZW0uIFRoZSBHWVBfREVG SU5FUyBlbnZpcm9ubWVudCB2YXJpYWJsZQorICAgICAgICAgICAgICAgICA7OyB0dXJucyBvdXQg dG8gYmUgdGhlIGVhc2llc3Qgd2F5IHRvIG1ha2Ugc3VyZSB0aGV5IGFyZQorICAgICAgICAgICAg ICAgICA7OyBwcm9wYWdhdGVkIGZyb20gbnBtIHRvIG5vZGUtZ3lwIHRvIGd5cC4KKyAgICAgICAg ICAgICAgICAgKHNldGVudiAiR1lQX0RFRklORVMiIChzdHJpbmctYXBwZW5kCisgICAgICAgICAg ICAgICAgICAgIm1vZHVsZV9uYW1lPSIKKyAgICAgICAgICAgICAgICAgICAoYXNzb2MtcmVmIGJp bmFyeS1hbGlzdCAibW9kdWxlX25hbWUiKQorICAgICAgICAgICAgICAgICAgICIgbW9kdWxlX3Bh dGg9IgorICAgICAgICAgICAgICAgICAgIChhc3NvYy1yZWYgYmluYXJ5LWFsaXN0ICJtb2R1bGVf cGF0aCIpKSkpCisgICAgICAgICAgICAgICA7OyBXZSBuZWVkIHRvIHJlbW92ZSB0aGUgaW5zdGFs bCBzY3JpcHQgZnJvbSAicGFja2FnZS5qc29uIiwKKyAgICAgICAgICAgICAgIDs7IGFzIGl0IHdv dWxkIHRyeSB0byB1c2Ugbm9kZS1wcmUtZ3lwIGFuZCB3b3VsZCBibG9jayB0aGUKKyAgICAgICAg ICAgICAgIDs7IGF1dG9tYXRpYyBidWlsZGluZyBwZXJmb3JtZWQgYnkgYG5wbSBpbnN0YWxsYC4K KyAgICAgICAgICAgICAgIChtYXAKKyAgICAgICAgICAgICAgICAgKG1hdGNoLWxhbWJkYQorICAg ICAgICAgICAgICAgICAgICgoInNjcmlwdHMiIC4gc2NyaXB0cy1hbGlzdCkKKyAgICAgICAgICAg ICAgICAgICAgIChjb25zICJzY3JpcHRzIiAoZmlsdGVyCisgICAgICAgICAgICAgICAgICAgICAg IChtYXRjaC1sYW1iZGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCJpbnN0YWxsIiAuIF8p ICNmKQorICAgICAgICAgICAgICAgICAgICAgICAgIChfICN0KSkKKyAgICAgICAgICAgICAgICAg ICAgICAgc2NyaXB0cy1hbGlzdCkpKQorICAgICAgICAgICAgICAgICAgIChvdGhlciBvdGhlcikp CisgICAgICAgICAgICAgICAgIHBrZy1tZXRhLWFsaXN0KSkpKSkpKSkKICAgICAoaG9tZS1wYWdl ICJodHRwczovL2dpdGh1Yi5jb20vbWFwYm94L25vZGUtc3FsaXRlMyIpCiAgICAgKHN5bm9wc2lz ICJOb2RlLmpzIGJpbmRpbmdzIGZvciBTUUxpdGUzIikKICAgICAoZGVzY3JpcHRpb24KZGlmZiAt LWdpdCBhL2d1aXgvYnVpbGQtc3lzdGVtL25vZGUuc2NtIGIvZ3VpeC9idWlsZC1zeXN0ZW0vbm9k ZS5zY20KaW5kZXggNTdmZTVmNjAzMC4uNDI1YjhjZDliMyAxMDA2NDQKLS0tIGEvZ3VpeC9idWls ZC1zeXN0ZW0vbm9kZS5zY20KKysrIGIvZ3VpeC9idWlsZC1zeXN0ZW0vbm9kZS5zY20KQEAgLTQs NiArNCw3IEBACiA7OzsgQ29weXJpZ2h0IMKpIDIwMjEgTHVkb3ZpYyBDb3VydMOocyA8bHVkb0Bn bnUub3JnPgogOzs7IENvcHlyaWdodCDCqSAyMDIxIFBpZXJyZSBMYW5nbG9pcyA8cGllcnJlLmxh bmdsb2lzQGdteC5jb20+CiA7OzsgQ29weXJpZ2h0IMKpIDIwMjEgUGhpbGlwIE1jR3JhdGggPHBo aWxpcEBwaGlsaXBtY2dyYXRoLmNvbT4KKzs7OyBDb3B5cmlnaHQgwqkgMjAyNCBEYW5pZWwgS2hv ZGFiYWtoc2ggPGQua2hvZGFiYWtoc2hAZ21haWwuY29tPgogOzs7CiA7OzsgVGhpcyBmaWxlIGlz IHBhcnQgb2YgR05VIEd1aXguCiA7OzsKQEAgLTM2LDcgKzM3LDEwIEBAIChkZWZpbmUtbW9kdWxl IChndWl4IGJ1aWxkLXN5c3RlbSBub2RlKQogKGRlZmluZSAlbm9kZS1idWlsZC1zeXN0ZW0tbW9k dWxlcwogICA7OyBCdWlsZC1zaWRlIG1vZHVsZXMgaW1wb3J0ZWQgYnkgZGVmYXVsdC4KICAgYCgo Z3VpeCBidWlsZCBub2RlLWJ1aWxkLXN5c3RlbSkKLSAgICAoZ3VpeCBidWlsZCBqc29uKQorICAg IChqc29uKQorICAgIChqc29uIGJ1aWxkZXIpCisgICAgKGpzb24gcGFyc2VyKQorICAgIChqc29u IHJlY29yZCkKICAgICAsQCVkZWZhdWx0LWdudS1pbXBvcnRlZC1tb2R1bGVzKSkKIAogKGRlZmlu ZSAoZGVmYXVsdC1ub2RlKQpkaWZmIC0tZ2l0IGEvZ3VpeC9idWlsZC9ub2RlLWJ1aWxkLXN5c3Rl bS5zY20gYi9ndWl4L2J1aWxkL25vZGUtYnVpbGQtc3lzdGVtLnNjbQppbmRleCBmYjIzODk0YmMx Li40NmUwZGRkNzFkIDEwMDY0NAotLS0gYS9ndWl4L2J1aWxkL25vZGUtYnVpbGQtc3lzdGVtLnNj bQorKysgYi9ndWl4L2J1aWxkL25vZGUtYnVpbGQtc3lzdGVtLnNjbQpAQCAtNCw2ICs0LDcgQEAK IDs7OyBDb3B5cmlnaHQgwqkgMjAxOSwgMjAyMSBUaW1vdGh5IFNhbXBsZSA8c2FtcGxldEBuZ3ly by5jb20+CiA7OzsgQ29weXJpZ2h0IMKpIDIwMjEsIDIwMjIgUGhpbGlwIE1jR3JhdGggPHBoaWxp cEBwaGlsaXBtY2dyYXRoLmNvbT4KIDs7OyBDb3B5cmlnaHQgwqkgMjAyMiBMaWxpYW5hIE1hcmll IFByaWtsZXIgPGxpbGlhbmEucHJpa2xlckBnbWFpbC5jb20+Cis7OzsgQ29weXJpZ2h0IMKpIDIw MjQgRGFuaWVsIEtob2RhYmFraHNoIDxkLmtob2RhYmFraHNoQGdtYWlsLmNvbT4KIDs7OwogOzs7 IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBHdWl4LgogOzs7CkBAIC0yMywxMCArMjQsMTAgQEAK IChkZWZpbmUtbW9kdWxlIChndWl4IGJ1aWxkIG5vZGUtYnVpbGQtc3lzdGVtKQogICAjOnVzZS1t b2R1bGUgKChndWl4IGJ1aWxkIGdudS1idWlsZC1zeXN0ZW0pICM6cHJlZml4IGdudTopCiAgICM6 dXNlLW1vZHVsZSAoZ3VpeCBidWlsZCB1dGlscykKLSAgIzp1c2UtbW9kdWxlIChndWl4IGJ1aWxk IGpzb24pCiAgICM6dXNlLW1vZHVsZSAoaWNlLTkgZnR3KQogICAjOnVzZS1tb2R1bGUgKGljZS05 IHJlZ2V4KQogICAjOnVzZS1tb2R1bGUgKGljZS05IG1hdGNoKQorICAjOnVzZS1tb2R1bGUgKGpz b24pCiAgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTEpCiAgICM6dXNlLW1vZHVsZSAoc3JmaSBz cmZpLTcxKQogICAjOmV4cG9ydCAoJXN0YW5kYXJkLXBoYXNlcwpAQCAtMzQsMTMgKzM1LDE0IEBA IChkZWZpbmUtbW9kdWxlIChndWl4IGJ1aWxkIG5vZGUtYnVpbGQtc3lzdGVtKQogICAgICAgICAg ICAgZGVsZXRlLWRlcGVuZGVuY2llcwogICAgICAgICAgICAgbm9kZS1idWlsZCkpCiAKLShkZWZp bmUgKHdpdGgtYXRvbWljLWpzb24tZmlsZS1yZXBsYWNlbWVudCBmaWxlIHByb2MpCisoZGVmaW5l KiAod2l0aC1hdG9taWMtanNvbi1maWxlLXJlcGxhY2VtZW50IHByb2MKKyAgIzpvcHRpb25hbCAo ZmlsZSAicGFja2FnZS5qc29uIikpCiAgICJMaWtlICd3aXRoLWF0b21pYy1maWxlLXJlcGxhY2Vt ZW50JywgYnV0IFBST0MgaXMgY2FsbGVkIHdpdGggYSBzaW5nbGUKIGFyZ3VtZW50LS0tdGhlIHJl c3VsdCBvZiBwYXJzaW5nIEZJTEUncyBjb250ZW50cyBhcyBqc29uLS0tYW5kIHNob3VsZCBhIHZh bHVlCiB0byBiZSB3cml0dGVuIGFzIGpzb24gdG8gdGhlIHJlcGxhY2VtZW50IEZJTEUuIgogICAo d2l0aC1hdG9taWMtZmlsZS1yZXBsYWNlbWVudCBmaWxlCiAgICAgKGxhbWJkYSAoaW4gb3V0KQot ICAgICAgKHdyaXRlLWpzb24gKHByb2MgKHJlYWQtanNvbiBpbikpIG91dCkpKSkKKyAgICAgIChz Y20tPmpzb24gKHByb2MgKGpzb24tPnNjbSBpbikpIG91dCkpKSkKIAogKGRlZmluZSogKGFzc29j LXJlZiogYWxpc3Qga2V5ICM6b3B0aW9uYWwgZGVmYXVsdCkKICAgIkxpa2UgYXNzb2MtcmVmLCBi dXQgcmV0dXJuIERFRkFVTFQgaW5zdGVhZCBvZiAjZiBpZiBubyB2YWx1ZSBleGlzdHMuIgpAQCAt NDgsMTAgKzUwLDYgQEAgKGRlZmluZSogKGFzc29jLXJlZiogYWxpc3Qga2V5ICM6b3B0aW9uYWwg ZGVmYXVsdCkKICAgICAoI2YgZGVmYXVsdCkKICAgICAoKF8gLiB2YWx1ZSkgdmFsdWUpKSkKIAot KGRlZmluZSogKGpzb2JqZWN0LXJlZiBvYmoga2V5ICM6b3B0aW9uYWwgZGVmYXVsdCkKLSAgKG1h dGNoIG9iagotICAgICgoJ0AgLiBhbGlzdCkgKGFzc29jLXJlZiogYWxpc3Qga2V5IGRlZmF1bHQp KSkpCi0KIChkZWZpbmUqIChhbGlzdC1wb3AgYWxpc3Qga2V5ICM6b3B0aW9uYWwgKD0gZXF1YWw/ KSkKICAgIlJldHVybiB0d28gdmFsdWVzLCB0aGUgZmlyc3QgcGFpciBpbiBBTElTVCB3aXRoIGtl eSBLRVksIGFuZCB0aGUgb3RoZXIKIGVsZW1lbnRzLiAgRXF1YWxpdHkgY2FsbHMgYXJlIG1hZGUg YXMgKD0gS0VZIEFMSVNUQ0FSKS4iCkBAIC02Myw2NyArNjEsMTcgQEAgKGRlZmluZSogKGFsaXN0 LXBvcCBhbGlzdCBrZXkgIzpvcHRpb25hbCAoPSBlcXVhbD8pKQogICAgICAgICAodmFsdWVzIChj YXIgYWZ0ZXIpIChhcHBlbmQgYmVmb3JlIChjZHIgYWZ0ZXIpKSkKICAgICAgICAgKHZhbHVlcyAj ZiBiZWZvcmUpKSkpCiAKLShkZWZpbmUqIChhbGlzdC11cGRhdGUgYWxpc3Qga2V5IHByb2MgIzpv cHRpb25hbCBkZWZhdWx0ICg9IGVxdWFsPykpCisoZGVmaW5lKiAoYWxpc3QtdXBkYXRlIGFsaXN0 IGtleSBwcm9jICM6b3B0aW9uYWwgKD0gZXF1YWw/KSkKICAgIlJldHVybiBhbiBhc3NvY2lhdGlv biBsaXN0IGxpa2UgQUxJU1QsIGJ1dCB3aXRoIEtFWSBtYXBwZWQgdG8gdGhlIHJlc3VsdCBvZgog UFJPQyBhcHBsaWVkIHRvIHRoZSBmaXJzdCB2YWx1ZSBmb3VuZCB1bmRlciB0aGUgY29tcGFyaXNv biAoPSBLRVkgQUxJU1RDQVIpLgotSWYgbm8gc3VjaCB2YWx1ZSBleGlzdHMsIHVzZSBERUZBVUxU IGluc3RlYWQuCitJZiBubyBzdWNoIHZhbHVlIGV4aXN0cywgcmV0dXJuIHRoZSBsaXN0IHVuY2hh bmdlZC4KIFVubGlrZSBhY29ucywgdGhpcyByZW1vdmVzIHRoZSBwcmV2aW91cyBhc3NvY2lhdGlv biBvZiBLRVkgKGFzc3VtaW5nIGl0IGlzCiB1bmlxdWUpLCBidXQgdGhlIHJlc3VsdCBtYXkgc3Rp bGwgc2hhcmUgc3RvcmFnZSB3aXRoIEFMSVNULiIKICAgKGxldCAoKHBhaXIgcmVzdCAoYWxpc3Qt cG9wIGFsaXN0IGtleSA9KSkpCi0gICAgKGFjb25zIGtleQotICAgICAgICAgICAocHJvYyAoaWYg KHBhaXI/IHBhaXIpCi0gICAgICAgICAgICAgICAgICAgICAoY2RyIHBhaXIpCi0gICAgICAgICAg ICAgICAgICAgICBkZWZhdWx0KSkKLSAgICAgICAgICAgcmVzdCkpKQotCi0oZGVmaW5lIChqc29i amVjdC11cGRhdGUqIGpzIC4gdXBkYXRlcykKLSAgIlJldHVybiBhIGpzb24gb2JqZWN0IGxpa2Ug SlMsIGJ1dCB3aXRoIGFsbCBVUERBVEVTIGFwcGxpZWQuICBFYWNoIHVwZGF0ZSBpcwotYSBsaXN0 IChLRVkgUFJPQyBbREVGQVVMVF0pLCBzbyB0aGF0IEtFWSBpcyBtYXBwZWQgdG8gdGhlIHJlc3Vs dCBvZiBQUk9DCi1hcHBsaWVkIHRvIHRoZSB2YWx1ZSB0byB3aGljaCBLRVkgaXMgbWFwcGVkIGlu IEpTLiAgSWYgbm8gc3VjaCBtYXBwaW5nIGV4aXN0cywKLVBST0MgaXMgaW5zdGVhZCBhcHBsaWVk IHRvIERFRkFVTFQsIG9yIHRvICcjZicgaXMgbm8gREVGQVVMVCBpcyBzcGVjaWZpZWQuCi1UaGUg dXBkYXRlIHRha2VzIHBsYWNlIGZyb20gbGVmdCB0byByaWdodCwgc28gbGF0ZXIgVVBEQVRFUnMg d2lsbCByZWNlaXZlIHRoZQotdmFsdWVzIHJldHVybmVkIGJ5IGVhcmxpZXIgVVBEQVRFUnMgZm9y IHRoZSBzYW1lIEtFWS4iCi0gIChtYXRjaCBqcwotICAgICgoJ0AgLiBhbGlzdCkKLSAgICAgKGxl dCBsb29wICgoYWxpc3QgYWxpc3QpCi0gICAgICAgICAgICAgICAgKHVwZGF0ZXMgdXBkYXRlcykp Ci0gICAgICAgKG1hdGNoIHVwZGF0ZXMKLSAgICAgICAgICgoKSAoY29ucyAnQCBhbGlzdCkpCi0g ICAgICAgICAoKChrZXkgcHJvYykgLiB1cGRhdGVzKQotICAgICAgICAgIChsb29wIChhbGlzdC11 cGRhdGUgYWxpc3Qga2V5IHByb2MgI2YgZXF1YWw/KSB1cGRhdGVzKSkKLSAgICAgICAgICgoKGtl eSBwcm9jIGRlZmF1bHQpIC4gdXBkYXRlcykKLSAgICAgICAgICAobG9vcCAoYWxpc3QtdXBkYXRl IGFsaXN0IGtleSBwcm9jIGRlZmF1bHQgZXF1YWw/KSB1cGRhdGVzKSkpKSkpKQotCi0oZGVmaW5l IChqc29iamVjdC11bmlvbiBjb21iaW5lIHNlZWQgLiBvYmplY3RzKQotICAiTWVyZ2UgT0JKRUNU UyBpbnRvIFNFRUQgYnkgYXBwbHlpbmcgKENPTUJJTkUgS0VZIFZBTDAgVkFMKSwgd2hlcmUgVkFM MAotaXMgdGhlIHZhbHVlIGZvdW5kIGluIHRoZSAocG9zc2libHkgdXBkYXRlZCkgU0VFRCBhbmQg VkFMIGlzIHRoZSBuZXcgdmFsdWUKLWZvdW5kIGluIG9uZSBvZiB0aGUgT0JKRUNUUy4iCi0gICht YXRjaCBzZWVkCi0gICAgKCgnQCAuIGFzZWVkKQotICAgICAobWF0Y2ggb2JqZWN0cwotICAgICAg ICgoKSBzZWVkKQotICAgICAgICgoKCdAIC4gYWxpc3RzKSAuLi4pCi0gICAgICAgIChjb25zCi0g ICAgICAgICAnQAotICAgICAgICAgKGZvbGQgKGxhbWJkYSAoYWxpc3QgYXNlZWQpCi0gICAgICAg ICAgICAgICAgIChpZiAobnVsbD8gYXNlZWQpIGFsaXN0Ci0gICAgICAgICAgICAgICAgICAgICAo Zm9sZAotICAgICAgICAgICAgICAgICAgICAgIChtYXRjaC1sYW1iZGEqCi0gICAgICAgICAgICAg ICAgICAgICAgICAoKChrIC4gdikgYXNlZWQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgKGxl dCAoKHBhaXIgdGFpbCAoYWxpc3QtcG9wIGFsaXN0IGspKSkKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgIChtYXRjaCBwYWlyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgjZiAoYWNv bnMgayB2IGFzZWVkKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfIC4gdjApIChh Y29ucyBrIChjb21iaW5lIGsgdjAgdikgYXNlZWQpKSkpKSkKLSAgICAgICAgICAgICAgICAgICAg ICBhc2VlZAotICAgICAgICAgICAgICAgICAgICAgIGFsaXN0KSkpCi0gICAgICAgICAgICAgICBh c2VlZAotICAgICAgICAgICAgICAgYWxpc3RzKSkpKSkpKQorICAgIChpZiAocGFpcj8gcGFpcikK KyAgICAgIChhY29ucyBrZXkgKHByb2MgKGNkciBwYWlyKSkgcmVzdCkKKyAgICAgIGFsaXN0KSkp CiAKLTs7IFBvc3NpYmx5IHVzZWZ1bCBoZWxwZXIgZnVuY3Rpb25zOgotOzsgKGRlZmluZSAobmV3 ZXN0IGtleSB2YWwwIHZhbCkgdmFsKQotOzsgKGRlZmluZSAodW5rZXllZC0+a2V5ZWQgcHJvYykg KGxhbWJkYSAoX2tleSB2YWwwIHZhbCkgKHByb2MgdmFsMCB2YWwpKSkKLQotDAogOzs7CiA7Ozsg UGhhc2VzLgogOzs7CkBAIC0xNDIsOCArOTAsOCBAQCAoZGVmaW5lIChzZXQtaG9tZSAuIF8pCiAK IChkZWZpbmUgKG1vZHVsZS1uYW1lIG1vZHVsZSkKICAgKGxldCogKChwYWNrYWdlLmpzb24gKHN0 cmluZy1hcHBlbmQgbW9kdWxlICIvcGFja2FnZS5qc29uIikpCi0gICAgICAgICAocGFja2FnZS1t ZXRhIChjYWxsLXdpdGgtaW5wdXQtZmlsZSBwYWNrYWdlLmpzb24gcmVhZC1qc29uKSkpCi0gICAg KGpzb2JqZWN0LXJlZiBwYWNrYWdlLW1ldGEgIm5hbWUiKSkpCisgICAgICAgICAocGFja2FnZS1t ZXRhIChjYWxsLXdpdGgtaW5wdXQtZmlsZSBwYWNrYWdlLmpzb24ganNvbi0+c2NtKSkpCisgICAg KGFzc29jLXJlZiBwYWNrYWdlLW1ldGEgIm5hbWUiKSkpCiAKIChkZWZpbmUgKGluZGV4LW1vZHVs ZXMgaW5wdXQtcGF0aHMpCiAgIChkZWZpbmUgKGxpc3QtbW9kdWxlcyBkaXJlY3RvcnkpCkBAIC0x NjcsNDkgKzExNSw2MCBAQCAoZGVmaW5lKiAocGF0Y2gtZGVwZW5kZW5jaWVzICM6a2V5IGlucHV0 cyAjOmFsbG93LW90aGVyLWtleXMpCiAKICAgKGRlZmluZSBpbmRleCAoaW5kZXgtbW9kdWxlcyAo bWFwIGNkciBpbnB1dHMpKSkKIAotICAoZGVmaW5lIHJlc29sdmUtZGVwZW5kZW5jaWVzCi0gICAg KG1hdGNoLWxhbWJkYQotICAgICAgKCgnQCAuIGFsaXN0KQotICAgICAgIChjb25zICdAIChtYXAg KG1hdGNoLWxhbWJkYQotICAgICAgICAgICAgICAgICAgICAgICAoKGtleSAuIHZhbHVlKQotICAg ICAgICAgICAgICAgICAgICAgICAgKGNvbnMga2V5IChoYXNoLXJlZiBpbmRleCBrZXkgdmFsdWUp KSkpCi0gICAgICAgICAgICAgICAgICAgICBhbGlzdCkpKSkpCisgIChkZWZpbmUgKHJlc29sdmUt ZGVwZW5kZW5jaWVzIGRlcGVuZGVuY2llcykKKyAgICAobWFwCisgICAgICAobWF0Y2gtbGFtYmRh CisgICAgICAgICgoZGVwZW5kZW5jeSAuIHZlcnNpb24pCisgICAgICAgICAgKGNvbnMgZGVwZW5k ZW5jeSAoaGFzaC1yZWYgaW5kZXggZGVwZW5kZW5jeSB2ZXJzaW9uKSkpKQorICAgICAgZGVwZW5k ZW5jaWVzKSkKIAotICAod2l0aC1hdG9taWMtanNvbi1maWxlLXJlcGxhY2VtZW50ICJwYWNrYWdl Lmpzb24iCisgICh3aXRoLWF0b21pYy1qc29uLWZpbGUtcmVwbGFjZW1lbnQKICAgICAobGFtYmRh IChwa2ctbWV0YSkKLSAgICAgIChqc29iamVjdC11cGRhdGUqCi0gICAgICAgcGtnLW1ldGEKLSAg ICAgICBgKCJkZXZEZXBlbmRlbmNpZXMiICxyZXNvbHZlLWRlcGVuZGVuY2llcyAoQCkpCi0gICAg ICAgYCgiZGVwZW5kZW5jaWVzIiAsKGxhbWJkYSAoZGVwcykKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgIChyZXNvbHZlLWRlcGVuZGVuY2llcwotICAgICAgICAgICAgICAgICAgICAgICAgICAg IChqc29iamVjdC11bmlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChr IGEgYikgYikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGpzb2JqZWN0LXJlZiBwa2ct bWV0YSAicGVlckRlcGVuZGVuY2llcyIgJyhAKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZGVwcykpKQotICAgICAgICAgKEApKSkpKQorICAgICAgKGZvbGQKKyAgICAgICAgKGxhbWJk YSAocHJvYyBwa2ctbWV0YSkgKHByb2MgcGtnLW1ldGEpKQorICAgICAgICBwa2ctbWV0YQorICAg ICAgICAobGlzdAorICAgICAgICAgIChsYW1iZGEgKHBrZy1tZXRhKQorICAgICAgICAgICAgKGFs aXN0LXVwZGF0ZSBwa2ctbWV0YSAiZGV2RGVwZW5kZW5jaWVzIiByZXNvbHZlLWRlcGVuZGVuY2ll cykpCisgICAgICAgICAgKGxhbWJkYSAocGtnLW1ldGEpCisgICAgICAgICAgICAoYXNzb2Mtc2V0 IQorICAgICAgICAgICAgICBwa2ctbWV0YQorICAgICAgICAgICAgICAiZGVwZW5kZW5jaWVzIgor ICAgICAgICAgICAgICAocmVzb2x2ZS1kZXBlbmRlbmNpZXMKKyAgICAgICAgICAgICAgICA7IENv bWJpbmVkICJwZWVyRGVwZW5kZW5jaWVzIiBhbmQgImRlcGVuZGVuY2llcyIgZGVwZW5kZW5jaWVz CisgICAgICAgICAgICAgICAgOyB3aXRoICJkZXBlbmRlbmNpZXMiIHRha2luZyBwcmVjZWRlbnQu CisgICAgICAgICAgICAgICAgKGZvbGQKKyAgICAgICAgICAgICAgICAgIChsYW1iZGEgKGRlcGVu ZGVuY3kgZGVwZW5kZW5jaWVzKQorICAgICAgICAgICAgICAgICAgICAoYXBwbHkgYXNzb2Mtc2V0 ISBkZXBlbmRlbmNpZXMgZGVwZW5kZW5jeSkpCisgICAgICAgICAgICAgICAgICAoYXNzb2MtcmVm KiBwa2ctbWV0YSAicGVlckRlcGVuZGVuY2llcyIgJygpKQorICAgICAgICAgICAgICAgICAgKGFz c29jLXJlZiogcGtnLW1ldGEgImRlcGVuZGVuY2llcyIgJygpKQorICAgICAgICAgICAgICAgICkp KSkpKSkpCiAgICN0KQogCi0oZGVmaW5lIChkZWxldGUtZGVwZW5kZW5jaWVzIGFic2VudCkKKyhk ZWZpbmUgKGRlbGV0ZS1kZXBlbmRlbmNpZXMgZGVwZW5kZW5jaWVzLXRvLXJlbW92ZSkKICAgIlJl d3JpdGUgJ3BhY2thZ2UuanNvbicgdG8gYWxsb3cgdGhlIGJ1aWxkIHRvIHByb2NlZWQgd2l0aG91 dCBwYWNrYWdlcwotbGlzdGVkIGluIEFCU0VOVCwgYSBsaXN0IG9mIHN0cmluZ3MgbmFtaW5nIG5w bSBwYWNrYWdlcy4KK2xpc3RlZCBpbiAnZGVwZW5kZW5jaWVzLXRvLXJlbW92ZScsIGEgbGlzdCBv ZiBzdHJpbmdzIG5hbWluZyBucG0gcGFja2FnZXMuCiAKIFRvIHByZXZlbnQgdGhlIGRlbGV0ZWQg ZGVwZW5kZW5jaWVzIGZyb20gYmVpbmcgcmVpbnRyb2R1Y2VkLCB1c2UgdGhpcyBmdW5jdGlvbgog b25seSBhZnRlciB0aGUgJ3BhdGNoLWRlcGVuZGVuY2llcycgcGhhc2UuIgotICAoZGVmaW5lIGRl bGV0ZS1mcm9tLWpzb2JqZWN0Ci0gICAgKG1hdGNoLWxhbWJkYQotICAgICAgKCgnQCAuIGFsaXN0 KQotICAgICAgIChjb25zICdAIChmaWx0ZXIgKG1hdGNoLWxhbWJkYQotICAgICAgICAgICAgICAg ICAgICAgICAgICAoKGsgLiBfKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAobWVt YmVyIGsgYWJzZW50KSkpKQotICAgICAgICAgICAgICAgICAgICAgICAgYWxpc3QpKSkpKQotCi0g ICh3aXRoLWF0b21pYy1qc29uLWZpbGUtcmVwbGFjZW1lbnQgInBhY2thZ2UuanNvbiIKKyAgKHdp dGgtYXRvbWljLWpzb24tZmlsZS1yZXBsYWNlbWVudAogICAgIChsYW1iZGEgKHBrZy1tZXRhKQot ICAgICAgKGpzb2JqZWN0LXVwZGF0ZSoKLSAgICAgICBwa2ctbWV0YQotICAgICAgIGAoImRldkRl cGVuZGVuY2llcyIgLGRlbGV0ZS1mcm9tLWpzb2JqZWN0IChAKSkKLSAgICAgICBgKCJkZXBlbmRl bmNpZXMiICxkZWxldGUtZnJvbS1qc29iamVjdCAoQCkpCi0gICAgICAgYCgicGVlckRlcGVuZGVu Y2llcyIgLGRlbGV0ZS1mcm9tLWpzb2JqZWN0IChAKSkpKSkpCisgICAgICAoZm9sZAorICAgICAg ICAobGFtYmRhIChkZXBlbmRlbmN5LWtleSBwa2ctbWV0YSkKKyAgICAgICAgICAoYWxpc3QtdXBk YXRlCisgICAgICAgICAgICBwa2ctbWV0YQorICAgICAgICAgICAgZGVwZW5kZW5jeS1rZXkKKyAg ICAgICAgICAgIChsYW1iZGEgKGRlcGVuZGVuY2llcykKKyAgICAgICAgICAgICAgKHJlbW92ZQor ICAgICAgICAgICAgICAgIChsYW1iZGEgKGRlcGVuZGVuY3kpCisgICAgICAgICAgICAgICAgICAo bWVtYmVyIChjYXIgZGVwZW5kZW5jeSkgZGVwZW5kZW5jaWVzLXRvLXJlbW92ZSkpCisgICAgICAg ICAgICAgICAgZGVwZW5kZW5jaWVzKSkpKQorICAgICAgICBwa2ctbWV0YQorICAgICAgICAobGlz dAorICAgICAgICAgICJkZXZEZXBlbmRlbmNpZXMiCisgICAgICAgICAgImRlcGVuZGVuY2llcyIK KyAgICAgICAgICAicGVlckRlcGVuZGVuY2llcyIKKyAgICAgICAgICAib3B0aW9uYWxEZXBlbmRl bmNpZXMiKSkpKSkKIAogKGRlZmluZSogKGRlbGV0ZS1sb2NrZmlsZXMgIzprZXkgaW5wdXRzICM6 YWxsb3ctb3RoZXIta2V5cykKICAgIkRlbGV0ZSAncGFja2FnZS1sb2NrLmpzb24nLCAneWFybi5s b2NrJywgYW5kICducG0tc2hyaW5rd3JhcC5qc29uJywgaWYgdGhleQpAQCAtMjI4LDggKzE4Nyw4 IEBAIChkZWZpbmUqIChjb25maWd1cmUgIzprZXkgb3V0cHV0cyBpbnB1dHMgIzphbGxvdy1vdGhl ci1rZXlzKQogICAgICN0KSkKIAogKGRlZmluZSogKGJ1aWxkICM6a2V5IGlucHV0cyAjOmFsbG93 LW90aGVyLWtleXMpCi0gIChsZXQgKChwYWNrYWdlLW1ldGEgKGNhbGwtd2l0aC1pbnB1dC1maWxl ICJwYWNrYWdlLmpzb24iIHJlYWQtanNvbikpKQotICAgIChpZiAoanNvYmplY3QtcmVmIChqc29i amVjdC1yZWYgcGFja2FnZS1tZXRhICJzY3JpcHRzIiAnKEApKSAiYnVpbGQiICNmKQorICAobGV0 ICgocGFja2FnZS1tZXRhIChjYWxsLXdpdGgtaW5wdXQtZmlsZSAicGFja2FnZS5qc29uIiBqc29u LT5zY20pKSkKKyAgICAoaWYgKGFzc29jLXJlZiogKGFzc29jLXJlZiogcGFja2FnZS1tZXRhICJz Y3JpcHRzIiAnKCkpICJidWlsZCIgI2YpCiAgICAgICAgIChsZXQgKChucG0gKHN0cmluZy1hcHBl bmQgKGFzc29jLXJlZiBpbnB1dHMgIm5vZGUiKSAiL2Jpbi9ucG0iKSkpCiAgICAgICAgICAgKGlu dm9rZSBucG0gInJ1biIgImJ1aWxkIikpCiAgICAgICAgIChmb3JtYXQgI3QgInRoZXJlIGlzIG5v IGJ1aWxkIHNjcmlwdCB0byBydW5+JSIpKQpAQCAtMzAxLDIyICsyNjAsMjAgQEAgKGRlZmluZSog KGF2b2lkLW5vZGUtZ3lwLXJlYnVpbGQgIzprZXkgb3V0cHV0cyAjOmFsbG93LW90aGVyLWtleXMp CiAgIDs7IGV2ZW4gbmVlZCB0byBvdmVyd3JpdGUgdGhpcyBmaWxlLiAgVGhlcmVmb3JlLCBsZXQn cyB1c2Ugc29tZSBoZWxwZXJzCiAgIDs7IHRoYXQgd2UnZCBvdGhlcndpc2Ugbm90IG5lZWQuCiAg IChkZWZpbmUgcGtnLW1ldGEKLSAgICAoY2FsbC13aXRoLWlucHV0LWZpbGUgaW5zdGFsbGVkLXBh Y2thZ2UuanNvbiByZWFkLWpzb24pKQorICAgIChjYWxsLXdpdGgtaW5wdXQtZmlsZSBpbnN0YWxs ZWQtcGFja2FnZS5qc29uIGpzb24tPnNjbSkpCiAgIChkZWZpbmUgc2NyaXB0cwotICAgIChqc29i amVjdC1yZWYgcGtnLW1ldGEgInNjcmlwdHMiICcoQCkpKQotICAoZGVmaW5lIChqc29iamVjdC1z ZXQganMga2V5IHZhbCkKLSAgICAoanNvYmplY3QtdXBkYXRlKiBqcyAobGlzdCBrZXkgKGNvbnN0 IHZhbCkpKSkKKyAgICAoYXNzb2MtcmVmKiBwa2ctbWV0YSAic2NyaXB0cyIgJygpKSkKIAotICAo d2hlbiAoZXF1YWw/ICJub2RlLWd5cCByZWJ1aWxkIiAoanNvYmplY3QtcmVmIHNjcmlwdHMgImlu c3RhbGwiICNmKSkKKyAgKHdoZW4gKGVxdWFsPyAibm9kZS1neXAgcmVidWlsZCIgKGFzc29jLXJl Ziogc2NyaXB0cyAiaW5zdGFsbCIgI2YpKQogICAgIChjYWxsLXdpdGgtb3V0cHV0LWZpbGUgaW5z dGFsbGVkLXBhY2thZ2UuanNvbgogICAgICAgKGxhbWJkYSAob3V0KQotICAgICAgICAod3JpdGUt anNvbgotICAgICAgICAgKGpzb2JqZWN0LXNldCBwa2ctbWV0YQotICAgICAgICAgICAgICAgICAg ICAgICAic2NyaXB0cyIKLSAgICAgICAgICAgICAgICAgICAgICAgKGpzb2JqZWN0LXNldCBzY3Jp cHRzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluc3RhbGwiCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVjaG8gR3VpeDogYXZvaWRpbmcgbm9k ZS1neXAgcmVidWlsZCIpKQotICAgICAgICAgb3V0KSkpKSkKKyAgICAgICAgKHNjbS0+anNvbgor ICAgICAgICAgIChhc3NvYy1zZXQhIHBrZy1tZXRhCisgICAgICAgICAgICAgICAgICAgICAgInNj cmlwdHMiCisgICAgICAgICAgICAgICAgICAgICAgKGFzc29jLXNldCEgc2NyaXB0cworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnN0YWxsIgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJlY2hvIEd1aXg6IGF2b2lkaW5nIG5vZGUtZ3lwIHJlYnVpbGQiKSkK KyAgICAgICAgICBvdXQpKSkpKQogCiAoZGVmaW5lICVzdGFuZGFyZC1waGFzZXMKICAgKG1vZGlm eS1waGFzZXMgZ251OiVzdGFuZGFyZC1waGFzZXMKCmJhc2UtY29tbWl0OiBjZmQ0ZjU2Zjc1YTIw YjY3MzJkNDYzMTgwZDIxMWY3OTZjOTAzMmU1Ci0tIAoyLjQ2LjAKCg== --000000000000ccd36f062955ee49--
guix-patches@HIDDEN
:bug#74900
; Package guix-patches
.
Full text available.Received: (at submit) by debbugs.gnu.org; 15 Dec 2024 20:30:44 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Dec 15 15:30:44 2024 Received: from localhost ([127.0.0.1]:52310 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tMvGD-0001Y5-Sl for submit <at> debbugs.gnu.org; Sun, 15 Dec 2024 15:30:44 -0500 Received: from lists.gnu.org ([209.51.188.17]:37042) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <d.khodabakhsh@HIDDEN>) id 1tMvG8-0001Xp-02 for submit <at> debbugs.gnu.org; Sun, 15 Dec 2024 15:30:39 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <d.khodabakhsh@HIDDEN>) id 1tMvG5-0002IP-Vn for guix-patches@HIDDEN; Sun, 15 Dec 2024 15:30:34 -0500 Received: from mail-vs1-xe34.google.com ([2607:f8b0:4864:20::e34]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from <d.khodabakhsh@HIDDEN>) id 1tMvG1-0002Ah-S8 for guix-patches@HIDDEN; Sun, 15 Dec 2024 15:30:33 -0500 Received: by mail-vs1-xe34.google.com with SMTP id ada2fe7eead31-4afe4f1ce18so912096137.3 for <guix-patches@HIDDEN>; Sun, 15 Dec 2024 12:30:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1734294628; x=1734899428; darn=gnu.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=1aU7kTCHHblHVZOr7RcCbL4C1R3ZTukOCrn72YxUyJo=; b=T1xo5TqdjsJthpOCNRpCmsom4c44qZHElsZ4UKExZ+dvRjRpzX8P+gsZAR7o0WlxL/ BvckoF3sYGVVdy9wbaw1+bntSdu+/4qUMhffQHvvewoI+RT3cJPRwCkc+nXIhHM/oWj6 KiPSkVU8AhB23R3P2atjuDs/7glePx0lxYqrFuQV2geRXVxylOnBAWhfnpYONUc8kKKx PVgd6auayGB+NtOhwBAqDaOdrHnLr4NnkpZqQXojmzn4jbjdmOqWXgAeYqJgpsTEopE3 26rNbVzXhBU7NqFxh/B9KHXWdUMf6TmnYvsIon5/g9Qm7K4gnZOJFoetUCNHxBZDeFtS 37Zg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1734294628; x=1734899428; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=1aU7kTCHHblHVZOr7RcCbL4C1R3ZTukOCrn72YxUyJo=; b=HbLdWKGR8mED1qJX/543VHxcmkatFDARGE57Svm2KQd/0Zg9RqbMh7ppKyK1oL9Dfl pm9RxAJ/sUpHOsfspCVu6kWJPDUJd71vfVTnf30KakDKp8zVO1S4pYX4mBoPqFlFp6CA xAUF1KtgQSO6wUC+qrjYOdNIcP7OrV5NKqmOioaY35eCUh0i3pKOsty0SzMbh836NwS1 o6QDea9xyRQC7mcC6zauGD7FRznlrwQopgzJnn070FBc3flxz9aBvDDkdVx4W6o3LaST K5hUtovuSKetsnA9aosHZoZdJ2yzpa8lGdsRmE5Tk5tCNrMD5UXNZw6OyMzHHZ1IPs5o D7+w== X-Gm-Message-State: AOJu0Yx0WbiGXsguAQcIPtW14t0i/OMe1ofWH4TQrrTITqTA4U44ZiA+ 7O07LW8qslSkhMgOOwZbwAZVj4UhiZbs5K2r117hct7/A94m8rQjksn8YR/x8m/xQdL3SpSNGuZ /OCsFkV+etRxSbLZHonbdk3IFGNNg4mbM X-Gm-Gg: ASbGncunZ8wExPlFDWERY7EFwb8Ce3X8Wdb7V6bJUFox1XaTi3R1wGL4dVim4S/3MVf kmAWLNGQEDKDtrvkkauM7un1m6RIrq38XrLzReQ== X-Google-Smtp-Source: AGHT+IEQTYixPjgGZ/8YSpwGTZFFPp7bctWyrd7qmb97Jal/3Jnabmt5ZYebCkRh5AF2W3Lbb4pnRWbZjXH4QPBgL0A= X-Received: by 2002:a05:6102:cd3:b0:4b2:5d10:58f1 with SMTP id ada2fe7eead31-4b25d9bc2f2mr12180732137.11.1734294627535; Sun, 15 Dec 2024 12:30:27 -0800 (PST) MIME-Version: 1.0 From: Daniel Khodabakhsh <d.khodabakhsh@HIDDEN> Date: Sun, 15 Dec 2024 20:30:16 +0000 Message-ID: <CAADuFnKAGHb2=rTFiwD9yXN3=OKbZdragGaCJJ0BkOhofDb2KQ@HIDDEN> Subject: [PATCH] Replace (guix build json) with (json) in node build system To: guix-patches@HIDDEN Content-Type: multipart/mixed; boundary="00000000000035ee88062954efaa" Received-SPF: pass client-ip=2607:f8b0:4864:20::e34; envelope-from=d.khodabakhsh@HIDDEN; helo=mail-vs1-xe34.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.3 (-) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -2.3 (--) --00000000000035ee88062954efaa Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable This change replaces the use of (guix build json) with (json) for the node ecosystem. Since guile-json is a dependency of Guix, and it's used elsewhere in the project, it makes sense to use this instead of rolling our own JSON implementation with (guix build json). This is one step to move away from (guix build json), there will be other changes to remove the other uses of it. I tested it out by building the 4 affected node-xyz packages and verified that the modified package.json was correct for node-acorn and node-addon-api. Signed-off-by: Daniel Khodabakhsh <d.khodabakhsh@HIDDEN> Change-Id: I0c86b3039eb2f50a19f9d9650f5a73b3a473ad37 --- gnu/packages/node-xyz.scm | 148 ++++++++++++-------------- guix/build-system/node.scm | 6 +- guix/build/node-build-system.scm | 176 +++++++++++-------------------- 3 files changed, 135 insertions(+), 195 deletions(-) diff --git a/gnu/packages/node-xyz.scm b/gnu/packages/node-xyz.scm index cf6f50e3ce..decfb50a66 100644 --- a/gnu/packages/node-xyz.scm +++ b/gnu/packages/node-xyz.scm @@ -7,6 +7,7 @@ ;;; Copyright =C2=A9 2021 Dhruvin Gandhi <contact@HIDDEN> ;;; Copyright =C2=A9 2022 Nicolas Graves <ngraves@HIDDEN> ;;; Copyright =C2=A9 2023 Jelle Licht <jlicht@HIDDEN> +;;; Copyright =C2=A9 2024 Daniel Khodabakhsh <d.khodabakhsh@HIDDEN> ;;; ;;; This file is part of GNU Guix. ;;; @@ -24,14 +25,14 @@ ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. (define-module (gnu packages node-xyz) - #:use-module ((guix licenses) #:prefix license:) #:use-module (gnu packages sqlite) #:use-module (gnu packages python) #:use-module (gnu packages web) + #:use-module (guix build-system node) #:use-module (guix gexp) - #:use-module (guix packages) #:use-module (guix git-download) - #:use-module (guix build-system node)) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages)) ;;; ;;; Please: Try to add new module packages in alphabetic order. @@ -69,19 +70,17 @@ (define-public node-acorn ;; it would try to use the build environment and would block = the ;; automatic building by other packages making use of node-ac= orn. ;; TODO: Add utility function - (with-atomic-json-file-replacement "package.json" - (match-lambda - (('@ . pkg-meta-alist) - (cons '@ (map (match-lambda - (("scripts" @ . scripts-alist) - `("scripts" @ ,@(filter (match-lambda - (("prepare" .= _) - #f) - (_ - #t)) - scripts-alist))= ) - (other other)) - pkg-meta-alist))))))) + (with-atomic-json-file-replacement (lambda (pkg-meta-alist) + (map + (match-lambda + (("scripts" . scripts-alist) + (cons "scripts" (filter + (match-lambda + (("prepare" . _) #f) + (_ #t)) + scripts-alist))) + (other other)) + pkg-meta-alist))))) (replace 'build (lambda* (#:key inputs native-inputs #:allow-other-keys) (let ((esbuild (search-input-file (or native-inputs inputs) @@ -156,23 +155,17 @@ (define-public node-addon-api (lambda args (define new-test-script "echo stopping after pretest on Guix") - (with-atomic-json-file-replacement "package.json" - (match-lambda - (('@ . pkg-meta-alist) - (cons - '@ - (map (match-lambda - (("scripts" '@ . scripts-alist) - `("scripts" @ ,@(map (match-lambda - (("test" . _) - (cons "test" - new-test-script)) - (other - other)) - scripts-alist))) - (other - other)) - pkg-meta-alist)))))))))) + (with-atomic-json-file-replacement (lambda (pkg-meta-alist) + (map + (match-lambda + (("scripts" . scripts-alist) + (cons "scripts" (map + (match-lambda + (("test" . _) (cons "test" new-test-script)) + (other other)) + scripts-alist))) + (other other)) + pkg-meta-alist)))))))) (home-page "https://github.com/nodejs/node-addon-api") (synopsis "Node.js API (Node-API) header-only C++ wrappers") (description "This module contains header-only C++ wrapper classes whi= ch @@ -1221,22 +1214,19 @@ (define-public node-serialport-bindings "node-abi")))) (add-after 'chdir 'avoid-prebuild-install (lambda args - (with-atomic-json-file-replacement "package.json" - (match-lambda - (('@ . pkg-meta-alist) - (cons '@ (map (match-lambda - (("scripts" @ . scripts-alist) - `("scripts" @ ,@(filter (match-lambda - (("install" .= _) - #f) - (_ - #t)) - scripts-alist))= ) - (("gypfile" . _) - '("gypfile" . #f)) - (other - other)) - pkg-meta-alist)))))))) + (with-atomic-json-file-replacement (lambda (pkg-meta-alist) + (map + (match-lambda + (("scripts" . scripts-alist) + (cons "scripts" (filter + (match-lambda + (("install" . _) #f) + (_ #t)) + scripts-alist))) + (("gypfile" . _) + (cons "gypfile" #f)) + (other other)) + pkg-meta-alist)))))) #:tests? #f)) (synopsis "Abstract base class for Node SerialPort bindings") (description "Node SerialPort is a modular suite of Node.js packages f= or @@ -1522,39 +1512,33 @@ (define-public node-sqlite3 (substitute* ".npmignore" (("lib/binding") "#lib/binding # <- patched for Guix")) - (with-atomic-json-file-replacement "package.json" - (match-lambda - (('@ . pkg-meta-alist) - (match (assoc-ref pkg-meta-alist "binary") - (('@ . binary-alist) - ;; When it builds from source, node-pre-gyp supplies - ;; module_name and module_path based on the entries u= nder - ;; "binary" from "package.json", so this package's - ;; "binding.gyp" doesn't define them. Thus, we also n= eed - ;; to supply them. The GYP_DEFINES environment variab= le - ;; turns out to be the easiest way to make sure they = are - ;; propagated from npm to node-gyp to gyp. - (setenv "GYP_DEFINES" - (string-append - "module_name=3D" - (assoc-ref binary-alist "module_name") - " " - "module_path=3D" - (assoc-ref binary-alist "module_path"))))) - ;; We need to remove the install script from "package.js= on", - ;; as it would try to use node-pre-gyp and would block t= he - ;; automatic building performed by `npm install`. - (cons '@ (map (match-lambda - (("scripts" @ . scripts-alist) - `("scripts" @ ,@(filter (match-lambda - (("install" .= _) - #f) - (_ - #t)) - scripts-alist))= ) - (other - other)) - pkg-meta-alist)))))))))) + (with-atomic-json-file-replacement (lambda (pkg-meta-alist) + (let ((binary-alist (assoc-ref pkg-meta-alist "binary"))) + ;; When it builds from source, node-pre-gyp supplies + ;; module_name and module_path based on the entries under + ;; "binary" from "package.json", so this package's + ;; "binding.gyp" doesn't define them. Thus, we also need + ;; to supply them. The GYP_DEFINES environment variable + ;; turns out to be the easiest way to make sure they are + ;; propagated from npm to node-gyp to gyp. + (setenv "GYP_DEFINES" (string-append + "module_name=3D" + (assoc-ref binary-alist "module_name") + " module_path=3D" + (assoc-ref binary-alist "module_path")))) + ;; We need to remove the install script from "package.json"= , + ;; as it would try to use node-pre-gyp and would block the + ;; automatic building performed by `npm install`. + (map + (match-lambda + (("scripts" . scripts-alist) + (cons "scripts" (filter + (match-lambda + (("install" . _) #f) + (_ #t)) + scripts-alist))) + (other other)) + pkg-meta-alist)))))))) (home-page "https://github.com/mapbox/node-sqlite3") (synopsis "Node.js bindings for SQLite3") (description diff --git a/guix/build-system/node.scm b/guix/build-system/node.scm index 57fe5f6030..425b8cd9b3 100644 --- a/guix/build-system/node.scm +++ b/guix/build-system/node.scm @@ -4,6 +4,7 @@ ;;; Copyright =C2=A9 2021 Ludovic Court=C3=A8s <ludo@HIDDEN> ;;; Copyright =C2=A9 2021 Pierre Langlois <pierre.langlois@HIDDEN> ;;; Copyright =C2=A9 2021 Philip McGrath <philip@HIDDEN> +;;; Copyright =C2=A9 2024 Daniel Khodabakhsh <d.khodabakhsh@HIDDEN> ;;; ;;; This file is part of GNU Guix. ;;; @@ -36,7 +37,10 @@ (define-module (guix build-system node) (define %node-build-system-modules ;; Build-side modules imported by default. `((guix build node-build-system) - (guix build json) + (json) + (json builder) + (json parser) + (json record) ,@%default-gnu-imported-modules)) (define (default-node) diff --git a/guix/build/node-build-system.scm b/guix/build/node-build-syste= m.scm index fb23894bc1..ef0f88a5a7 100644 --- a/guix/build/node-build-system.scm +++ b/guix/build/node-build-system.scm @@ -4,6 +4,7 @@ ;;; Copyright =C2=A9 2019, 2021 Timothy Sample <samplet@HIDDEN> ;;; Copyright =C2=A9 2021, 2022 Philip McGrath <philip@HIDDEN> ;;; Copyright =C2=A9 2022 Liliana Marie Prikler <liliana.prikler@HIDDEN= > +;;; Copyright =C2=A9 2024 Daniel Khodabakhsh <d.khodabakhsh@HIDDEN> ;;; ;;; This file is part of GNU Guix. ;;; @@ -23,10 +24,10 @@ (define-module (guix build node-build-system) #:use-module ((guix build gnu-build-system) #:prefix gnu:) #:use-module (guix build utils) - #:use-module (guix build json) #:use-module (ice-9 ftw) #:use-module (ice-9 regex) #:use-module (ice-9 match) + #:use-module (json) #:use-module (srfi srfi-1) #:use-module (srfi srfi-71) #:export (%standard-phases @@ -34,13 +35,13 @@ (define-module (guix build node-build-system) delete-dependencies node-build)) -(define (with-atomic-json-file-replacement file proc) +(define* (with-atomic-json-file-replacement proc #:optional (file "package.json")) "Like 'with-atomic-file-replacement', but PROC is called with a single argument---the result of parsing FILE's contents as json---and should a va= lue to be written as json to the replacement FILE." (with-atomic-file-replacement file (lambda (in out) - (write-json (proc (read-json in)) out)))) + (scm->json (proc (json->scm in)) out)))) (define* (assoc-ref* alist key #:optional default) "Like assoc-ref, but return DEFAULT instead of #f if no value exists." @@ -48,10 +49,6 @@ (define* (assoc-ref* alist key #:optional default) (#f default) ((_ . value) value))) -(define* (jsobject-ref obj key #:optional default) - (match obj - (('@ . alist) (assoc-ref* alist key default)))) - (define* (alist-pop alist key #:optional (=3D equal?)) "Return two values, the first pair in ALIST with key KEY, and the other elements. Equality calls are made as (=3D KEY ALISTCAR)." @@ -63,67 +60,17 @@ (define* (alist-pop alist key #:optional (=3D equal?)) (values (car after) (append before (cdr after))) (values #f before)))) -(define* (alist-update alist key proc #:optional default (=3D equal?)) +(define* (alist-update alist key proc #:optional (=3D equal?)) "Return an association list like ALIST, but with KEY mapped to the resul= t of PROC applied to the first value found under the comparison (=3D KEY ALISTC= AR). -If no such value exists, use DEFAULT instead. +If no such value exists, return the list unchanged. Unlike acons, this removes the previous association of KEY (assuming it is unique), but the result may still share storage with ALIST." (let ((pair rest (alist-pop alist key =3D))) - (acons key - (proc (if (pair? pair) - (cdr pair) - default)) - rest))) - -(define (jsobject-update* js . updates) - "Return a json object like JS, but with all UPDATES applied. Each updat= e is -a list (KEY PROC [DEFAULT]), so that KEY is mapped to the result of PROC -applied to the value to which KEY is mapped in JS. If no such mapping exi= sts, -PROC is instead applied to DEFAULT, or to '#f' is no DEFAULT is specified. -The update takes place from left to right, so later UPDATERs will receive = the -values returned by earlier UPDATERs for the same KEY." - (match js - (('@ . alist) - (let loop ((alist alist) - (updates updates)) - (match updates - (() (cons '@ alist)) - (((key proc) . updates) - (loop (alist-update alist key proc #f equal?) updates)) - (((key proc default) . updates) - (loop (alist-update alist key proc default equal?) updates))))))= ) - -(define (jsobject-union combine seed . objects) - "Merge OBJECTS into SEED by applying (COMBINE KEY VAL0 VAL), where VAL0 -is the value found in the (possibly updated) SEED and VAL is the new value -found in one of the OBJECTS." - (match seed - (('@ . aseed) - (match objects - (() seed) - ((('@ . alists) ...) - (cons - '@ - (fold (lambda (alist aseed) - (if (null? aseed) alist - (fold - (match-lambda* - (((k . v) aseed) - (let ((pair tail (alist-pop alist k))) - (match pair - (#f (acons k v aseed)) - ((_ . v0) (acons k (combine k v0 v) aseed))))= )) - aseed - alist))) - aseed - alists))))))) + (if (pair? pair) + (acons key (proc (cdr pair)) rest) + alist))) -;; Possibly useful helper functions: -;; (define (newest key val0 val) val) -;; (define (unkeyed->keyed proc) (lambda (_key val0 val) (proc val0 val))) - - ;;; ;;; Phases. ;;; @@ -142,8 +89,8 @@ (define (set-home . _) (define (module-name module) (let* ((package.json (string-append module "/package.json")) - (package-meta (call-with-input-file package.json read-json))) - (jsobject-ref package-meta "name"))) + (package-meta (call-with-input-file package.json json->scm))) + (assoc-ref package-meta "name"))) (define (index-modules input-paths) (define (list-modules directory) @@ -167,49 +114,56 @@ (define* (patch-dependencies #:key inputs #:allow-other-keys) (define index (index-modules (map cdr inputs))) - (define resolve-dependencies - (match-lambda - (('@ . alist) - (cons '@ (map (match-lambda - ((key . value) - (cons key (hash-ref index key value)))) - alist))))) + (define (resolve-dependencies dependencies) + (map + (match-lambda + ((dependency . version) + (cons dependency (hash-ref index dependency version)))) + dependencies)) - (with-atomic-json-file-replacement "package.json" + (with-atomic-json-file-replacement (lambda (pkg-meta) - (jsobject-update* - pkg-meta - `("devDependencies" ,resolve-dependencies (@)) - `("dependencies" ,(lambda (deps) - (resolve-dependencies - (jsobject-union - (lambda (k a b) b) - (jsobject-ref pkg-meta "peerDependencies" '(@= )) - deps))) - (@))))) + (fold + (lambda (proc pkg-meta) (proc pkg-meta)) + pkg-meta + (list + (lambda (pkg-meta) + (alist-update pkg-meta "devDependencies" resolve-dependencies)= ) + (lambda (pkg-meta) + (assoc-set! + pkg-meta + "dependencies" + (resolve-dependencies + ; Combined "peerDependencies" and "dependencies" dependenc= ies + ; with "dependencies" taking precedent. + (fold + (lambda (dependency dependencies) + (assoc-set! dependencies (car dependency) (cdr dependency))) + (assoc-ref* pkg-meta "peerDependencies" '()) + (assoc-ref* pkg-meta "dependencies" '()) + )))))))) #t) -(define (delete-dependencies absent) +(define (delete-dependencies dependencies-to-remove) "Rewrite 'package.json' to allow the build to proceed without packages -listed in ABSENT, a list of strings naming npm packages. +listed in 'dependencies-to-remove', a list of strings naming npm packages. To prevent the deleted dependencies from being reintroduced, use this func= tion only after the 'patch-dependencies' phase." - (define delete-from-jsobject - (match-lambda - (('@ . alist) - (cons '@ (filter (match-lambda - ((k . _) - (not (member k absent)))) - alist))))) - - (with-atomic-json-file-replacement "package.json" + (with-atomic-json-file-replacement (lambda (pkg-meta) - (jsobject-update* - pkg-meta - `("devDependencies" ,delete-from-jsobject (@)) - `("dependencies" ,delete-from-jsobject (@)) - `("peerDependencies" ,delete-from-jsobject (@)))))) + (fold + (lambda (dependency-key pkg-meta) + (alist-update + pkg-meta + dependency-key + (lambda (dependencies) + (remove + (lambda (dependency) + (member (car dependency) dependencies-to-remove)) + dependencies)))) + pkg-meta + (list "devDependencies" "dependencies" "peerDependencies" "optionalDependencies"))))) (define* (delete-lockfiles #:key inputs #:allow-other-keys) "Delete 'package-lock.json', 'yarn.lock', and 'npm-shrinkwrap.json', if = they @@ -228,8 +182,8 @@ (define* (configure #:key outputs inputs #:allow-other-= keys) #t)) (define* (build #:key inputs #:allow-other-keys) - (let ((package-meta (call-with-input-file "package.json" read-json))) - (if (jsobject-ref (jsobject-ref package-meta "scripts" '(@)) "build" #= f) + (let ((package-meta (call-with-input-file "package.json" json->scm))) + (if (assoc-ref* (assoc-ref* package-meta "scripts" '()) "build" #f) (let ((npm (string-append (assoc-ref inputs "node") "/bin/npm"))) (invoke npm "run" "build")) (format #t "there is no build script to run~%")) @@ -301,22 +255,20 @@ (define* (avoid-node-gyp-rebuild #:key outputs #:allow-other-keys) ;; even need to overwrite this file. Therefore, let's use some helpers ;; that we'd otherwise not need. (define pkg-meta - (call-with-input-file installed-package.json read-json)) + (call-with-input-file installed-package.json json->scm)) (define scripts - (jsobject-ref pkg-meta "scripts" '(@))) - (define (jsobject-set js key val) - (jsobject-update* js (list key (const val)))) + (assoc-ref* pkg-meta "scripts" '())) - (when (equal? "node-gyp rebuild" (jsobject-ref scripts "install" #f)) + (when (equal? "node-gyp rebuild" (assoc-ref* scripts "install" #f)) (call-with-output-file installed-package.json (lambda (out) - (write-json - (jsobject-set pkg-meta - "scripts" - (jsobject-set scripts - "install" - "echo Guix: avoiding node-gyp rebuild= ")) - out))))) + (scm->json + (assoc-set! pkg-meta + "scripts" + (assoc-set! scripts + "install" + "echo Guix: avoiding node-gyp rebuild")) + out))))) (define %standard-phases (modify-phases gnu:%standard-phases base-commit: cfd4f56f75a20b6732d463180d211f796c9032e5 --=20 2.46.0 --00000000000035ee88062954efaa Content-Type: text/x-patch; charset="UTF-8"; name="0001-Replace-guix-build-json-with-json-in-node-build-syst.patch" Content-Disposition: attachment; filename="0001-Replace-guix-build-json-with-json-in-node-build-syst.patch" Content-Transfer-Encoding: base64 Content-ID: <f_m4q28ebt0> X-Attachment-Id: f_m4q28ebt0 RnJvbSAwMDk1YzJjZjdlOTc2NmJjNDc0MDQ0MWM4NDkyMTlhMzA2MDIzNTIyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgS2hvZGFiYWtoc2ggPGQua2hvZGFiYWtoc2hAZ21h aWwuY29tPgpEYXRlOiBTdW4sIDE1IERlYyAyMDI0IDExOjMwOjMzIC0wODAwClN1YmplY3Q6IFtQ QVRDSF0gUmVwbGFjZSAoZ3VpeCBidWlsZCBqc29uKSB3aXRoIChqc29uKSBpbiBub2RlIGJ1aWxk IHN5c3RlbQoKVGhpcyBjaGFuZ2UgcmVwbGFjZXMgdGhlIHVzZSBvZiAoZ3VpeCBidWlsZCBqc29u KSB3aXRoIChqc29uKSBmb3IgdGhlIG5vZGUgZWNvc3lzdGVtLgpTaW5jZSBndWlsZS1qc29uIGlz IGEgZGVwZW5kZW5jeSBvZiBHdWl4LCBhbmQgaXQncyB1c2VkIGVsc2V3aGVyZSBpbiB0aGUgcHJv amVjdCwgaXQgbWFrZXMgc2Vuc2UgdG8gdXNlIHRoaXMgaW5zdGVhZCBvZiByb2xsaW5nIG91ciBv d24gSlNPTiBpbXBsZW1lbnRhdGlvbiB3aXRoIChndWl4IGJ1aWxkIGpzb24pLgpUaGlzIGlzIG9u ZSBzdGVwIHRvIG1vdmUgYXdheSBmcm9tIChndWl4IGJ1aWxkIGpzb24pLCB0aGVyZSB3aWxsIGJl IG90aGVyIGNoYW5nZXMgdG8gcmVtb3ZlIHRoZSBvdGhlciB1c2VzIG9mIGl0LgoKU2lnbmVkLW9m Zi1ieTogRGFuaWVsIEtob2RhYmFraHNoIDxkLmtob2RhYmFraHNoQGdtYWlsLmNvbT4KQ2hhbmdl LUlkOiBJMGM4NmIzMDM5ZWIyZjUwYTE5ZjlkOTY1MGY1YTczYjNhNDczYWQzNwotLS0KIGdudS9w YWNrYWdlcy9ub2RlLXh5ei5zY20gICAgICAgIHwgMTQ4ICsrKysrKysrKysrKy0tLS0tLS0tLS0t LS0tCiBndWl4L2J1aWxkLXN5c3RlbS9ub2RlLnNjbSAgICAgICB8ICAgNiArLQogZ3VpeC9idWls ZC9ub2RlLWJ1aWxkLXN5c3RlbS5zY20gfCAxNzYgKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0t LS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAxMzUgaW5zZXJ0aW9ucygrKSwgMTk1IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2dudS9wYWNrYWdlcy9ub2RlLXh5ei5zY20gYi9nbnUvcGFja2FnZXMv bm9kZS14eXouc2NtCmluZGV4IGNmNmY1MGUzY2UuLmRlY2ZiNTBhNjYgMTAwNjQ0Ci0tLSBhL2du dS9wYWNrYWdlcy9ub2RlLXh5ei5zY20KKysrIGIvZ251L3BhY2thZ2VzL25vZGUteHl6LnNjbQpA QCAtNyw2ICs3LDcgQEAKIDs7OyBDb3B5cmlnaHQgwqkgMjAyMSBEaHJ1dmluIEdhbmRoaSA8Y29u dGFjdEBkaHJ1dmluLmRldj4KIDs7OyBDb3B5cmlnaHQgwqkgMjAyMiBOaWNvbGFzIEdyYXZlcyA8 bmdyYXZlc0BuZ3JhdmVzLmZyPgogOzs7IENvcHlyaWdodCDCqSAyMDIzIEplbGxlIExpY2h0IDxq bGljaHRAZnNmZS5vcmc+Cis7OzsgQ29weXJpZ2h0IMKpIDIwMjQgRGFuaWVsIEtob2RhYmFraHNo IDxkLmtob2RhYmFraHNoQGdtYWlsLmNvbT4KIDs7OwogOzs7IFRoaXMgZmlsZSBpcyBwYXJ0IG9m IEdOVSBHdWl4LgogOzs7CkBAIC0yNCwxNCArMjUsMTQgQEAKIDs7OyBhbG9uZyB3aXRoIEdOVSBH dWl4LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogCiAoZGVm aW5lLW1vZHVsZSAoZ251IHBhY2thZ2VzIG5vZGUteHl6KQotICAjOnVzZS1tb2R1bGUgKChndWl4 IGxpY2Vuc2VzKSAjOnByZWZpeCBsaWNlbnNlOikKICAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2Fn ZXMgc3FsaXRlKQogICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBweXRob24pCiAgICM6dXNl LW1vZHVsZSAoZ251IHBhY2thZ2VzIHdlYikKKyAgIzp1c2UtbW9kdWxlIChndWl4IGJ1aWxkLXN5 c3RlbSBub2RlKQogICAjOnVzZS1tb2R1bGUgKGd1aXggZ2V4cCkKLSAgIzp1c2UtbW9kdWxlIChn dWl4IHBhY2thZ2VzKQogICAjOnVzZS1tb2R1bGUgKGd1aXggZ2l0LWRvd25sb2FkKQotICAjOnVz ZS1tb2R1bGUgKGd1aXggYnVpbGQtc3lzdGVtIG5vZGUpKQorICAjOnVzZS1tb2R1bGUgKChndWl4 IGxpY2Vuc2VzKSAjOnByZWZpeCBsaWNlbnNlOikKKyAgIzp1c2UtbW9kdWxlIChndWl4IHBhY2th Z2VzKSkKIAogOzs7CiA7OzsgUGxlYXNlOiBUcnkgdG8gYWRkIG5ldyBtb2R1bGUgcGFja2FnZXMg aW4gYWxwaGFiZXRpYyBvcmRlci4KQEAgLTY5LDE5ICs3MCwxNyBAQCAoZGVmaW5lLXB1YmxpYyBu b2RlLWFjb3JuCiAgICAgICAgICAgICAgOzsgaXQgd291bGQgdHJ5IHRvIHVzZSB0aGUgYnVpbGQg ZW52aXJvbm1lbnQgYW5kIHdvdWxkIGJsb2NrIHRoZQogICAgICAgICAgICAgIDs7IGF1dG9tYXRp YyBidWlsZGluZyBieSBvdGhlciBwYWNrYWdlcyBtYWtpbmcgdXNlIG9mIG5vZGUtYWNvcm4uCiAg ICAgICAgICAgICAgOzsgVE9ETzogQWRkIHV0aWxpdHkgZnVuY3Rpb24KLSAgICAgICAgICAgICAo d2l0aC1hdG9taWMtanNvbi1maWxlLXJlcGxhY2VtZW50ICJwYWNrYWdlLmpzb24iCi0gICAgICAg ICAgICAgICAobWF0Y2gtbGFtYmRhCi0gICAgICAgICAgICAgICAgICgoJ0AgLiBwa2ctbWV0YS1h bGlzdCkKLSAgICAgICAgICAgICAgICAgIChjb25zICdAIChtYXAgKG1hdGNoLWxhbWJkYQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoInNjcmlwdHMiIEAgLiBzY3JpcHRzLWFs aXN0KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgKCJzY3JpcHRzIiBAICxA KGZpbHRlciAobWF0Y2gtbGFtYmRhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgicHJlcGFyZSIgLiBfKQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjZikKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoXwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAjdCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNjcmlwdHMtYWxpc3QpKSkKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAob3RoZXIgb3RoZXIpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwa2ctbWV0YS1hbGlzdCkpKSkpKSkKKyAgICAgICAgICAgICAod2l0aC1hdG9taWMtanNv bi1maWxlLXJlcGxhY2VtZW50IChsYW1iZGEgKHBrZy1tZXRhLWFsaXN0KQorICAgICAgICAgICAg ICAgKG1hcAorICAgICAgICAgICAgICAgICAobWF0Y2gtbGFtYmRhCisgICAgICAgICAgICAgICAg ICAgKCgic2NyaXB0cyIgLiBzY3JpcHRzLWFsaXN0KQorICAgICAgICAgICAgICAgICAgICAgKGNv bnMgInNjcmlwdHMiIChmaWx0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoLWxhbWJk YQorICAgICAgICAgICAgICAgICAgICAgICAgICgoInByZXBhcmUiIC4gXykgI2YpCisgICAgICAg ICAgICAgICAgICAgICAgICAgKF8gI3QpKQorICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRz LWFsaXN0KSkpCisgICAgICAgICAgICAgICAgICAgKG90aGVyIG90aGVyKSkKKyAgICAgICAgICAg ICAgICAgcGtnLW1ldGEtYWxpc3QpKSkpKQogICAgICAgICAgKHJlcGxhY2UgJ2J1aWxkCiAgICAg ICAgICAgIChsYW1iZGEqICgjOmtleSBpbnB1dHMgbmF0aXZlLWlucHV0cyAjOmFsbG93LW90aGVy LWtleXMpCiAgICAgICAgICAgICAgKGxldCAoKGVzYnVpbGQgKHNlYXJjaC1pbnB1dC1maWxlIChv ciBuYXRpdmUtaW5wdXRzIGlucHV0cykKQEAgLTE1NiwyMyArMTU1LDE3IEBAIChkZWZpbmUtcHVi bGljIG5vZGUtYWRkb24tYXBpCiAgICAgICAgICAgIChsYW1iZGEgYXJncwogICAgICAgICAgICAg IChkZWZpbmUgbmV3LXRlc3Qtc2NyaXB0CiAgICAgICAgICAgICAgICAiZWNobyBzdG9wcGluZyBh ZnRlciBwcmV0ZXN0IG9uIEd1aXgiKQotICAgICAgICAgICAgICh3aXRoLWF0b21pYy1qc29uLWZp bGUtcmVwbGFjZW1lbnQgInBhY2thZ2UuanNvbiIKLSAgICAgICAgICAgICAgIChtYXRjaC1sYW1i ZGEKLSAgICAgICAgICAgICAgICAgKCgnQCAuIHBrZy1tZXRhLWFsaXN0KQotICAgICAgICAgICAg ICAgICAgKGNvbnMKLSAgICAgICAgICAgICAgICAgICAnQAotICAgICAgICAgICAgICAgICAgICht YXAgKG1hdGNoLWxhbWJkYQotICAgICAgICAgICAgICAgICAgICAgICAgICAoKCJzY3JpcHRzIiAn QCAuIHNjcmlwdHMtYWxpc3QpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBgKCJzY3JpcHRz IiBAICxAKG1hcCAobWF0Y2gtbGFtYmRhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICgoInRlc3QiIC4gXykKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zICJ0ZXN0IgotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3LXRlc3Qtc2NyaXB0 KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG90 aGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv dGhlcikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz Y3JpcHRzLWFsaXN0KSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChvdGhlcgotICAgICAg ICAgICAgICAgICAgICAgICAgICAgb3RoZXIpKQotICAgICAgICAgICAgICAgICAgICAgICAgcGtn LW1ldGEtYWxpc3QpKSkpKSkpKSkpCisgICAgICAgICAgICAgKHdpdGgtYXRvbWljLWpzb24tZmls ZS1yZXBsYWNlbWVudCAobGFtYmRhIChwa2ctbWV0YS1hbGlzdCkKKyAgICAgICAgICAgICAgICht YXAKKyAgICAgICAgICAgICAgICAgKG1hdGNoLWxhbWJkYQorICAgICAgICAgICAgICAgICAgICgo InNjcmlwdHMiIC4gc2NyaXB0cy1hbGlzdCkKKyAgICAgICAgICAgICAgICAgICAgIChjb25zICJz Y3JpcHRzIiAobWFwCisgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaC1sYW1iZGEKKyAgICAg ICAgICAgICAgICAgICAgICAgICAoKCJ0ZXN0IiAuIF8pIChjb25zICJ0ZXN0IiBuZXctdGVzdC1z Y3JpcHQpKQorICAgICAgICAgICAgICAgICAgICAgICAgIChvdGhlciBvdGhlcikpCisgICAgICAg ICAgICAgICAgICAgICAgIHNjcmlwdHMtYWxpc3QpKSkKKyAgICAgICAgICAgICAgICAgICAob3Ro ZXIgb3RoZXIpKQorICAgICAgICAgICAgICAgICBwa2ctbWV0YS1hbGlzdCkpKSkpKSkpCiAgICAg KGhvbWUtcGFnZSAiaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlLWFkZG9uLWFwaSIpCiAg ICAgKHN5bm9wc2lzICJOb2RlLmpzIEFQSSAoTm9kZS1BUEkpIGhlYWRlci1vbmx5IEMrKyB3cmFw cGVycyIpCiAgICAgKGRlc2NyaXB0aW9uICJUaGlzIG1vZHVsZSBjb250YWlucyBoZWFkZXItb25s eSBDKysgd3JhcHBlciBjbGFzc2VzIHdoaWNoCkBAIC0xMjIxLDIyICsxMjE0LDE5IEBAIChkZWZp bmUtcHVibGljIG5vZGUtc2VyaWFscG9ydC1iaW5kaW5ncwogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIm5vZGUtYWJpIikpKSkKICAgICAgICAgIChhZGQtYWZ0ZXIgJ2NoZGly ICdhdm9pZC1wcmVidWlsZC1pbnN0YWxsCiAgICAgICAgICAgIChsYW1iZGEgYXJncwotICAgICAg ICAgICAgICh3aXRoLWF0b21pYy1qc29uLWZpbGUtcmVwbGFjZW1lbnQgInBhY2thZ2UuanNvbiIK LSAgICAgICAgICAgICAgIChtYXRjaC1sYW1iZGEKLSAgICAgICAgICAgICAgICAgKCgnQCAuIHBr Zy1tZXRhLWFsaXN0KQotICAgICAgICAgICAgICAgICAgKGNvbnMgJ0AgKG1hcCAobWF0Y2gtbGFt YmRhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgic2NyaXB0cyIgQCAuIHNj cmlwdHMtYWxpc3QpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAoInNjcmlw dHMiIEAgLEAoZmlsdGVyIChtYXRjaC1sYW1iZGEKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCJpbnN0YWxsIiAuIF8pCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICNmKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChfCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICN0KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0cy1hbGlzdCkpKQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICgoImd5cGZpbGUiIC4gXykKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJygiZ3lwZmlsZSIgLiAjZikpCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKG90aGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG90aGVyKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGtnLW1ldGEtYWxpc3Qp KSkpKSkpKQorICAgICAgICAgICAgICh3aXRoLWF0b21pYy1qc29uLWZpbGUtcmVwbGFjZW1lbnQg KGxhbWJkYSAocGtnLW1ldGEtYWxpc3QpCisgICAgICAgICAgICAgICAobWFwCisgICAgICAgICAg ICAgICAgIChtYXRjaC1sYW1iZGEKKyAgICAgICAgICAgICAgICAgICAoKCJzY3JpcHRzIiAuIHNj cmlwdHMtYWxpc3QpCisgICAgICAgICAgICAgICAgICAgICAoY29ucyAic2NyaXB0cyIgKGZpbHRl cgorICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2gtbGFtYmRhCisgICAgICAgICAgICAgICAg ICAgICAgICAgKCgiaW5zdGFsbCIgLiBfKSAjZikKKyAgICAgICAgICAgICAgICAgICAgICAgICAo XyAjdCkpCisgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdHMtYWxpc3QpKSkKKyAgICAgICAg ICAgICAgICAgICAoKCJneXBmaWxlIiAuIF8pCisgICAgICAgICAgICAgICAgICAgICAoY29ucyAi Z3lwZmlsZSIgI2YpKQorICAgICAgICAgICAgICAgICAgIChvdGhlciBvdGhlcikpCisgICAgICAg ICAgICAgICAgIHBrZy1tZXRhLWFsaXN0KSkpKSkpCiAgICAgICAgIzp0ZXN0cz8gI2YpKQogICAg IChzeW5vcHNpcyAiQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgTm9kZSBTZXJpYWxQb3J0IGJpbmRp bmdzIikKICAgICAoZGVzY3JpcHRpb24gIk5vZGUgU2VyaWFsUG9ydCBpcyBhIG1vZHVsYXIgc3Vp dGUgb2YgTm9kZS5qcyBwYWNrYWdlcyBmb3IKQEAgLTE1MjIsMzkgKzE1MTIsMzMgQEAgKGRlZmlu ZS1wdWJsaWMgbm9kZS1zcWxpdGUzCiAgICAgICAgICAgICAgKHN1YnN0aXR1dGUqICIubnBtaWdu b3JlIgogICAgICAgICAgICAgICAgKCgibGliL2JpbmRpbmciKQogICAgICAgICAgICAgICAgICIj bGliL2JpbmRpbmcgIyA8LSBwYXRjaGVkIGZvciBHdWl4IikpCi0gICAgICAgICAgICAgKHdpdGgt YXRvbWljLWpzb24tZmlsZS1yZXBsYWNlbWVudCAicGFja2FnZS5qc29uIgotICAgICAgICAgICAg ICAgKG1hdGNoLWxhbWJkYQotICAgICAgICAgICAgICAgICAoKCdAIC4gcGtnLW1ldGEtYWxpc3Qp Ci0gICAgICAgICAgICAgICAgICAobWF0Y2ggKGFzc29jLXJlZiBwa2ctbWV0YS1hbGlzdCAiYmlu YXJ5IikKLSAgICAgICAgICAgICAgICAgICAgKCgnQCAuIGJpbmFyeS1hbGlzdCkKLSAgICAgICAg ICAgICAgICAgICAgIDs7IFdoZW4gaXQgYnVpbGRzIGZyb20gc291cmNlLCBub2RlLXByZS1neXAg c3VwcGxpZXMKLSAgICAgICAgICAgICAgICAgICAgIDs7IG1vZHVsZV9uYW1lIGFuZCBtb2R1bGVf cGF0aCBiYXNlZCBvbiB0aGUgZW50cmllcyB1bmRlcgotICAgICAgICAgICAgICAgICAgICAgOzsg ImJpbmFyeSIgZnJvbSAicGFja2FnZS5qc29uIiwgc28gdGhpcyBwYWNrYWdlJ3MKLSAgICAgICAg ICAgICAgICAgICAgIDs7ICJiaW5kaW5nLmd5cCIgZG9lc24ndCBkZWZpbmUgdGhlbS4gVGh1cywg d2UgYWxzbyBuZWVkCi0gICAgICAgICAgICAgICAgICAgICA7OyB0byBzdXBwbHkgdGhlbS4gVGhl IEdZUF9ERUZJTkVTIGVudmlyb25tZW50IHZhcmlhYmxlCi0gICAgICAgICAgICAgICAgICAgICA7 OyB0dXJucyBvdXQgdG8gYmUgdGhlIGVhc2llc3Qgd2F5IHRvIG1ha2Ugc3VyZSB0aGV5IGFyZQot ICAgICAgICAgICAgICAgICAgICAgOzsgcHJvcGFnYXRlZCBmcm9tIG5wbSB0byBub2RlLWd5cCB0 byBneXAuCi0gICAgICAgICAgICAgICAgICAgICAoc2V0ZW52ICJHWVBfREVGSU5FUyIKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJtb2R1bGVfbmFtZT0iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoYXNzb2MtcmVmIGJpbmFyeS1hbGlzdCAibW9kdWxlX25hbWUiKQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kdWxl X3BhdGg9IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFzc29jLXJlZiBiaW5hcnkt YWxpc3QgIm1vZHVsZV9wYXRoIikpKSkpCi0gICAgICAgICAgICAgICAgICA7OyBXZSBuZWVkIHRv IHJlbW92ZSB0aGUgaW5zdGFsbCBzY3JpcHQgZnJvbSAicGFja2FnZS5qc29uIiwKLSAgICAgICAg ICAgICAgICAgIDs7IGFzIGl0IHdvdWxkIHRyeSB0byB1c2Ugbm9kZS1wcmUtZ3lwIGFuZCB3b3Vs ZCBibG9jayB0aGUKLSAgICAgICAgICAgICAgICAgIDs7IGF1dG9tYXRpYyBidWlsZGluZyBwZXJm b3JtZWQgYnkgYG5wbSBpbnN0YWxsYC4KLSAgICAgICAgICAgICAgICAgIChjb25zICdAIChtYXAg KG1hdGNoLWxhbWJkYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoInNjcmlw dHMiIEAgLiBzY3JpcHRzLWFsaXN0KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBgKCJzY3JpcHRzIiBAICxAKGZpbHRlciAobWF0Y2gtbGFtYmRhCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgiaW5zdGFsbCIg LiBfKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAjZikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoXwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdCkpCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdHMtYWxpc3QpKSkKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3RoZXIKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgb3RoZXIpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwa2ctbWV0YS1hbGlzdCkpKSkpKSkpKSkKKyAgICAgICAgICAgICAod2l0aC1hdG9taWMtanNv bi1maWxlLXJlcGxhY2VtZW50IChsYW1iZGEgKHBrZy1tZXRhLWFsaXN0KQorICAgICAgICAgICAg ICAgKGxldCAoKGJpbmFyeS1hbGlzdCAoYXNzb2MtcmVmIHBrZy1tZXRhLWFsaXN0ICJiaW5hcnki KSkpCisgICAgICAgICAgICAgICAgIDs7IFdoZW4gaXQgYnVpbGRzIGZyb20gc291cmNlLCBub2Rl LXByZS1neXAgc3VwcGxpZXMKKyAgICAgICAgICAgICAgICAgOzsgbW9kdWxlX25hbWUgYW5kIG1v ZHVsZV9wYXRoIGJhc2VkIG9uIHRoZSBlbnRyaWVzIHVuZGVyCisgICAgICAgICAgICAgICAgIDs7 ICJiaW5hcnkiIGZyb20gInBhY2thZ2UuanNvbiIsIHNvIHRoaXMgcGFja2FnZSdzCisgICAgICAg ICAgICAgICAgIDs7ICJiaW5kaW5nLmd5cCIgZG9lc24ndCBkZWZpbmUgdGhlbS4gVGh1cywgd2Ug YWxzbyBuZWVkCisgICAgICAgICAgICAgICAgIDs7IHRvIHN1cHBseSB0aGVtLiBUaGUgR1lQX0RF RklORVMgZW52aXJvbm1lbnQgdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgOzsgdHVybnMgb3V0 IHRvIGJlIHRoZSBlYXNpZXN0IHdheSB0byBtYWtlIHN1cmUgdGhleSBhcmUKKyAgICAgICAgICAg ICAgICAgOzsgcHJvcGFnYXRlZCBmcm9tIG5wbSB0byBub2RlLWd5cCB0byBneXAuCisgICAgICAg ICAgICAgICAgIChzZXRlbnYgIkdZUF9ERUZJTkVTIiAoc3RyaW5nLWFwcGVuZAorICAgICAgICAg ICAgICAgICAgICJtb2R1bGVfbmFtZT0iCisgICAgICAgICAgICAgICAgICAgKGFzc29jLXJlZiBi aW5hcnktYWxpc3QgIm1vZHVsZV9uYW1lIikKKyAgICAgICAgICAgICAgICAgICAiIG1vZHVsZV9w YXRoPSIKKyAgICAgICAgICAgICAgICAgICAoYXNzb2MtcmVmIGJpbmFyeS1hbGlzdCAibW9kdWxl X3BhdGgiKSkpKQorICAgICAgICAgICAgICAgOzsgV2UgbmVlZCB0byByZW1vdmUgdGhlIGluc3Rh bGwgc2NyaXB0IGZyb20gInBhY2thZ2UuanNvbiIsCisgICAgICAgICAgICAgICA7OyBhcyBpdCB3 b3VsZCB0cnkgdG8gdXNlIG5vZGUtcHJlLWd5cCBhbmQgd291bGQgYmxvY2sgdGhlCisgICAgICAg ICAgICAgICA7OyBhdXRvbWF0aWMgYnVpbGRpbmcgcGVyZm9ybWVkIGJ5IGBucG0gaW5zdGFsbGAu CisgICAgICAgICAgICAgICAobWFwCisgICAgICAgICAgICAgICAgIChtYXRjaC1sYW1iZGEKKyAg ICAgICAgICAgICAgICAgICAoKCJzY3JpcHRzIiAuIHNjcmlwdHMtYWxpc3QpCisgICAgICAgICAg ICAgICAgICAgICAoY29ucyAic2NyaXB0cyIgKGZpbHRlcgorICAgICAgICAgICAgICAgICAgICAg ICAobWF0Y2gtbGFtYmRhCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgiaW5zdGFsbCIgLiBf KSAjZikKKyAgICAgICAgICAgICAgICAgICAgICAgICAoXyAjdCkpCisgICAgICAgICAgICAgICAg ICAgICAgIHNjcmlwdHMtYWxpc3QpKSkKKyAgICAgICAgICAgICAgICAgICAob3RoZXIgb3RoZXIp KQorICAgICAgICAgICAgICAgICBwa2ctbWV0YS1hbGlzdCkpKSkpKSkpCiAgICAgKGhvbWUtcGFn ZSAiaHR0cHM6Ly9naXRodWIuY29tL21hcGJveC9ub2RlLXNxbGl0ZTMiKQogICAgIChzeW5vcHNp cyAiTm9kZS5qcyBiaW5kaW5ncyBmb3IgU1FMaXRlMyIpCiAgICAgKGRlc2NyaXB0aW9uCmRpZmYg LS1naXQgYS9ndWl4L2J1aWxkLXN5c3RlbS9ub2RlLnNjbSBiL2d1aXgvYnVpbGQtc3lzdGVtL25v ZGUuc2NtCmluZGV4IDU3ZmU1ZjYwMzAuLjQyNWI4Y2Q5YjMgMTAwNjQ0Ci0tLSBhL2d1aXgvYnVp bGQtc3lzdGVtL25vZGUuc2NtCisrKyBiL2d1aXgvYnVpbGQtc3lzdGVtL25vZGUuc2NtCkBAIC00 LDYgKzQsNyBAQAogOzs7IENvcHlyaWdodCDCqSAyMDIxIEx1ZG92aWMgQ291cnTDqHMgPGx1ZG9A Z251Lm9yZz4KIDs7OyBDb3B5cmlnaHQgwqkgMjAyMSBQaWVycmUgTGFuZ2xvaXMgPHBpZXJyZS5s YW5nbG9pc0BnbXguY29tPgogOzs7IENvcHlyaWdodCDCqSAyMDIxIFBoaWxpcCBNY0dyYXRoIDxw aGlsaXBAcGhpbGlwbWNncmF0aC5jb20+Cis7OzsgQ29weXJpZ2h0IMKpIDIwMjQgRGFuaWVsIEto b2RhYmFraHNoIDxkLmtob2RhYmFraHNoQGdtYWlsLmNvbT4KIDs7OwogOzs7IFRoaXMgZmlsZSBp cyBwYXJ0IG9mIEdOVSBHdWl4LgogOzs7CkBAIC0zNiw3ICszNywxMCBAQCAoZGVmaW5lLW1vZHVs ZSAoZ3VpeCBidWlsZC1zeXN0ZW0gbm9kZSkKIChkZWZpbmUgJW5vZGUtYnVpbGQtc3lzdGVtLW1v ZHVsZXMKICAgOzsgQnVpbGQtc2lkZSBtb2R1bGVzIGltcG9ydGVkIGJ5IGRlZmF1bHQuCiAgIGAo KGd1aXggYnVpbGQgbm9kZS1idWlsZC1zeXN0ZW0pCi0gICAgKGd1aXggYnVpbGQganNvbikKKyAg ICAoanNvbikKKyAgICAoanNvbiBidWlsZGVyKQorICAgIChqc29uIHBhcnNlcikKKyAgICAoanNv biByZWNvcmQpCiAgICAgLEAlZGVmYXVsdC1nbnUtaW1wb3J0ZWQtbW9kdWxlcykpCiAKIChkZWZp bmUgKGRlZmF1bHQtbm9kZSkKZGlmZiAtLWdpdCBhL2d1aXgvYnVpbGQvbm9kZS1idWlsZC1zeXN0 ZW0uc2NtIGIvZ3VpeC9idWlsZC9ub2RlLWJ1aWxkLXN5c3RlbS5zY20KaW5kZXggZmIyMzg5NGJj MS4uZWYwZjg4YTVhNyAxMDA2NDQKLS0tIGEvZ3VpeC9idWlsZC9ub2RlLWJ1aWxkLXN5c3RlbS5z Y20KKysrIGIvZ3VpeC9idWlsZC9ub2RlLWJ1aWxkLXN5c3RlbS5zY20KQEAgLTQsNiArNCw3IEBA CiA7OzsgQ29weXJpZ2h0IMKpIDIwMTksIDIwMjEgVGltb3RoeSBTYW1wbGUgPHNhbXBsZXRAbmd5 cm8uY29tPgogOzs7IENvcHlyaWdodCDCqSAyMDIxLCAyMDIyIFBoaWxpcCBNY0dyYXRoIDxwaGls aXBAcGhpbGlwbWNncmF0aC5jb20+CiA7OzsgQ29weXJpZ2h0IMKpIDIwMjIgTGlsaWFuYSBNYXJp ZSBQcmlrbGVyIDxsaWxpYW5hLnByaWtsZXJAZ21haWwuY29tPgorOzs7IENvcHlyaWdodCDCqSAy MDI0IERhbmllbCBLaG9kYWJha2hzaCA8ZC5raG9kYWJha2hzaEBnbWFpbC5jb20+CiA7OzsKIDs7 OyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgR3VpeC4KIDs7OwpAQCAtMjMsMTAgKzI0LDEwIEBA CiAoZGVmaW5lLW1vZHVsZSAoZ3VpeCBidWlsZCBub2RlLWJ1aWxkLXN5c3RlbSkKICAgIzp1c2Ut bW9kdWxlICgoZ3VpeCBidWlsZCBnbnUtYnVpbGQtc3lzdGVtKSAjOnByZWZpeCBnbnU6KQogICAj OnVzZS1tb2R1bGUgKGd1aXggYnVpbGQgdXRpbHMpCi0gICM6dXNlLW1vZHVsZSAoZ3VpeCBidWls ZCBqc29uKQogICAjOnVzZS1tb2R1bGUgKGljZS05IGZ0dykKICAgIzp1c2UtbW9kdWxlIChpY2Ut OSByZWdleCkKICAgIzp1c2UtbW9kdWxlIChpY2UtOSBtYXRjaCkKKyAgIzp1c2UtbW9kdWxlIChq c29uKQogICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS0xKQogICAjOnVzZS1tb2R1bGUgKHNyZmkg c3JmaS03MSkKICAgIzpleHBvcnQgKCVzdGFuZGFyZC1waGFzZXMKQEAgLTM0LDEzICszNSwxMyBA QCAoZGVmaW5lLW1vZHVsZSAoZ3VpeCBidWlsZCBub2RlLWJ1aWxkLXN5c3RlbSkKICAgICAgICAg ICAgIGRlbGV0ZS1kZXBlbmRlbmNpZXMKICAgICAgICAgICAgIG5vZGUtYnVpbGQpKQogCi0oZGVm aW5lICh3aXRoLWF0b21pYy1qc29uLWZpbGUtcmVwbGFjZW1lbnQgZmlsZSBwcm9jKQorKGRlZmlu ZSogKHdpdGgtYXRvbWljLWpzb24tZmlsZS1yZXBsYWNlbWVudCBwcm9jICM6b3B0aW9uYWwgKGZp bGUgInBhY2thZ2UuanNvbiIpKQogICAiTGlrZSAnd2l0aC1hdG9taWMtZmlsZS1yZXBsYWNlbWVu dCcsIGJ1dCBQUk9DIGlzIGNhbGxlZCB3aXRoIGEgc2luZ2xlCiBhcmd1bWVudC0tLXRoZSByZXN1 bHQgb2YgcGFyc2luZyBGSUxFJ3MgY29udGVudHMgYXMganNvbi0tLWFuZCBzaG91bGQgYSB2YWx1 ZQogdG8gYmUgd3JpdHRlbiBhcyBqc29uIHRvIHRoZSByZXBsYWNlbWVudCBGSUxFLiIKICAgKHdp dGgtYXRvbWljLWZpbGUtcmVwbGFjZW1lbnQgZmlsZQogICAgIChsYW1iZGEgKGluIG91dCkKLSAg ICAgICh3cml0ZS1qc29uIChwcm9jIChyZWFkLWpzb24gaW4pKSBvdXQpKSkpCisgICAgICAoc2Nt LT5qc29uIChwcm9jIChqc29uLT5zY20gaW4pKSBvdXQpKSkpCiAKIChkZWZpbmUqIChhc3NvYy1y ZWYqIGFsaXN0IGtleSAjOm9wdGlvbmFsIGRlZmF1bHQpCiAgICJMaWtlIGFzc29jLXJlZiwgYnV0 IHJldHVybiBERUZBVUxUIGluc3RlYWQgb2YgI2YgaWYgbm8gdmFsdWUgZXhpc3RzLiIKQEAgLTQ4 LDEwICs0OSw2IEBAIChkZWZpbmUqIChhc3NvYy1yZWYqIGFsaXN0IGtleSAjOm9wdGlvbmFsIGRl ZmF1bHQpCiAgICAgKCNmIGRlZmF1bHQpCiAgICAgKChfIC4gdmFsdWUpIHZhbHVlKSkpCiAKLShk ZWZpbmUqIChqc29iamVjdC1yZWYgb2JqIGtleSAjOm9wdGlvbmFsIGRlZmF1bHQpCi0gIChtYXRj aCBvYmoKLSAgICAoKCdAIC4gYWxpc3QpIChhc3NvYy1yZWYqIGFsaXN0IGtleSBkZWZhdWx0KSkp KQotCiAoZGVmaW5lKiAoYWxpc3QtcG9wIGFsaXN0IGtleSAjOm9wdGlvbmFsICg9IGVxdWFsPykp CiAgICJSZXR1cm4gdHdvIHZhbHVlcywgdGhlIGZpcnN0IHBhaXIgaW4gQUxJU1Qgd2l0aCBrZXkg S0VZLCBhbmQgdGhlIG90aGVyCiBlbGVtZW50cy4gIEVxdWFsaXR5IGNhbGxzIGFyZSBtYWRlIGFz ICg9IEtFWSBBTElTVENBUikuIgpAQCAtNjMsNjcgKzYwLDE3IEBAIChkZWZpbmUqIChhbGlzdC1w b3AgYWxpc3Qga2V5ICM6b3B0aW9uYWwgKD0gZXF1YWw/KSkKICAgICAgICAgKHZhbHVlcyAoY2Fy IGFmdGVyKSAoYXBwZW5kIGJlZm9yZSAoY2RyIGFmdGVyKSkpCiAgICAgICAgICh2YWx1ZXMgI2Yg YmVmb3JlKSkpKQogCi0oZGVmaW5lKiAoYWxpc3QtdXBkYXRlIGFsaXN0IGtleSBwcm9jICM6b3B0 aW9uYWwgZGVmYXVsdCAoPSBlcXVhbD8pKQorKGRlZmluZSogKGFsaXN0LXVwZGF0ZSBhbGlzdCBr ZXkgcHJvYyAjOm9wdGlvbmFsICg9IGVxdWFsPykpCiAgICJSZXR1cm4gYW4gYXNzb2NpYXRpb24g bGlzdCBsaWtlIEFMSVNULCBidXQgd2l0aCBLRVkgbWFwcGVkIHRvIHRoZSByZXN1bHQgb2YKIFBS T0MgYXBwbGllZCB0byB0aGUgZmlyc3QgdmFsdWUgZm91bmQgdW5kZXIgdGhlIGNvbXBhcmlzb24g KD0gS0VZIEFMSVNUQ0FSKS4KLUlmIG5vIHN1Y2ggdmFsdWUgZXhpc3RzLCB1c2UgREVGQVVMVCBp bnN0ZWFkLgorSWYgbm8gc3VjaCB2YWx1ZSBleGlzdHMsIHJldHVybiB0aGUgbGlzdCB1bmNoYW5n ZWQuCiBVbmxpa2UgYWNvbnMsIHRoaXMgcmVtb3ZlcyB0aGUgcHJldmlvdXMgYXNzb2NpYXRpb24g b2YgS0VZIChhc3N1bWluZyBpdCBpcwogdW5pcXVlKSwgYnV0IHRoZSByZXN1bHQgbWF5IHN0aWxs IHNoYXJlIHN0b3JhZ2Ugd2l0aCBBTElTVC4iCiAgIChsZXQgKChwYWlyIHJlc3QgKGFsaXN0LXBv cCBhbGlzdCBrZXkgPSkpKQotICAgIChhY29ucyBrZXkKLSAgICAgICAgICAgKHByb2MgKGlmIChw YWlyPyBwYWlyKQotICAgICAgICAgICAgICAgICAgICAgKGNkciBwYWlyKQotICAgICAgICAgICAg ICAgICAgICAgZGVmYXVsdCkpCi0gICAgICAgICAgIHJlc3QpKSkKLQotKGRlZmluZSAoanNvYmpl Y3QtdXBkYXRlKiBqcyAuIHVwZGF0ZXMpCi0gICJSZXR1cm4gYSBqc29uIG9iamVjdCBsaWtlIEpT LCBidXQgd2l0aCBhbGwgVVBEQVRFUyBhcHBsaWVkLiAgRWFjaCB1cGRhdGUgaXMKLWEgbGlzdCAo S0VZIFBST0MgW0RFRkFVTFRdKSwgc28gdGhhdCBLRVkgaXMgbWFwcGVkIHRvIHRoZSByZXN1bHQg b2YgUFJPQwotYXBwbGllZCB0byB0aGUgdmFsdWUgdG8gd2hpY2ggS0VZIGlzIG1hcHBlZCBpbiBK Uy4gIElmIG5vIHN1Y2ggbWFwcGluZyBleGlzdHMsCi1QUk9DIGlzIGluc3RlYWQgYXBwbGllZCB0 byBERUZBVUxULCBvciB0byAnI2YnIGlzIG5vIERFRkFVTFQgaXMgc3BlY2lmaWVkLgotVGhlIHVw ZGF0ZSB0YWtlcyBwbGFjZSBmcm9tIGxlZnQgdG8gcmlnaHQsIHNvIGxhdGVyIFVQREFURVJzIHdp bGwgcmVjZWl2ZSB0aGUKLXZhbHVlcyByZXR1cm5lZCBieSBlYXJsaWVyIFVQREFURVJzIGZvciB0 aGUgc2FtZSBLRVkuIgotICAobWF0Y2gganMKLSAgICAoKCdAIC4gYWxpc3QpCi0gICAgIChsZXQg bG9vcCAoKGFsaXN0IGFsaXN0KQotICAgICAgICAgICAgICAgICh1cGRhdGVzIHVwZGF0ZXMpKQot ICAgICAgIChtYXRjaCB1cGRhdGVzCi0gICAgICAgICAoKCkgKGNvbnMgJ0AgYWxpc3QpKQotICAg ICAgICAgKCgoa2V5IHByb2MpIC4gdXBkYXRlcykKLSAgICAgICAgICAobG9vcCAoYWxpc3QtdXBk YXRlIGFsaXN0IGtleSBwcm9jICNmIGVxdWFsPykgdXBkYXRlcykpCi0gICAgICAgICAoKChrZXkg cHJvYyBkZWZhdWx0KSAuIHVwZGF0ZXMpCi0gICAgICAgICAgKGxvb3AgKGFsaXN0LXVwZGF0ZSBh bGlzdCBrZXkgcHJvYyBkZWZhdWx0IGVxdWFsPykgdXBkYXRlcykpKSkpKSkKLQotKGRlZmluZSAo anNvYmplY3QtdW5pb24gY29tYmluZSBzZWVkIC4gb2JqZWN0cykKLSAgIk1lcmdlIE9CSkVDVFMg aW50byBTRUVEIGJ5IGFwcGx5aW5nIChDT01CSU5FIEtFWSBWQUwwIFZBTCksIHdoZXJlIFZBTDAK LWlzIHRoZSB2YWx1ZSBmb3VuZCBpbiB0aGUgKHBvc3NpYmx5IHVwZGF0ZWQpIFNFRUQgYW5kIFZB TCBpcyB0aGUgbmV3IHZhbHVlCi1mb3VuZCBpbiBvbmUgb2YgdGhlIE9CSkVDVFMuIgotICAobWF0 Y2ggc2VlZAotICAgICgoJ0AgLiBhc2VlZCkKLSAgICAgKG1hdGNoIG9iamVjdHMKLSAgICAgICAo KCkgc2VlZCkKLSAgICAgICAoKCgnQCAuIGFsaXN0cykgLi4uKQotICAgICAgICAoY29ucwotICAg ICAgICAgJ0AKLSAgICAgICAgIChmb2xkIChsYW1iZGEgKGFsaXN0IGFzZWVkKQotICAgICAgICAg ICAgICAgICAoaWYgKG51bGw/IGFzZWVkKSBhbGlzdAotICAgICAgICAgICAgICAgICAgICAgKGZv bGQKLSAgICAgICAgICAgICAgICAgICAgICAobWF0Y2gtbGFtYmRhKgotICAgICAgICAgICAgICAg ICAgICAgICAgKCgoayAuIHYpIGFzZWVkKQotICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQg KChwYWlyIHRhaWwgKGFsaXN0LXBvcCBhbGlzdCBrKSkpCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAobWF0Y2ggcGFpcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoI2YgKGFjb25z IGsgdiBhc2VlZCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoXyAuIHYwKSAoYWNv bnMgayAoY29tYmluZSBrIHYwIHYpIGFzZWVkKSkpKSkpCi0gICAgICAgICAgICAgICAgICAgICAg YXNlZWQKLSAgICAgICAgICAgICAgICAgICAgICBhbGlzdCkpKQotICAgICAgICAgICAgICAgYXNl ZWQKLSAgICAgICAgICAgICAgIGFsaXN0cykpKSkpKSkKKyAgICAoaWYgKHBhaXI/IHBhaXIpCisg ICAgICAoYWNvbnMga2V5IChwcm9jIChjZHIgcGFpcikpIHJlc3QpCisgICAgICBhbGlzdCkpKQog Ci07OyBQb3NzaWJseSB1c2VmdWwgaGVscGVyIGZ1bmN0aW9uczoKLTs7IChkZWZpbmUgKG5ld2Vz dCBrZXkgdmFsMCB2YWwpIHZhbCkKLTs7IChkZWZpbmUgKHVua2V5ZWQtPmtleWVkIHByb2MpIChs YW1iZGEgKF9rZXkgdmFsMCB2YWwpIChwcm9jIHZhbDAgdmFsKSkpCi0KLQwKIDs7OwogOzs7IFBo YXNlcy4KIDs7OwpAQCAtMTQyLDggKzg5LDggQEAgKGRlZmluZSAoc2V0LWhvbWUgLiBfKQogCiAo ZGVmaW5lIChtb2R1bGUtbmFtZSBtb2R1bGUpCiAgIChsZXQqICgocGFja2FnZS5qc29uIChzdHJp bmctYXBwZW5kIG1vZHVsZSAiL3BhY2thZ2UuanNvbiIpKQotICAgICAgICAgKHBhY2thZ2UtbWV0 YSAoY2FsbC13aXRoLWlucHV0LWZpbGUgcGFja2FnZS5qc29uIHJlYWQtanNvbikpKQotICAgIChq c29iamVjdC1yZWYgcGFja2FnZS1tZXRhICJuYW1lIikpKQorICAgICAgICAgKHBhY2thZ2UtbWV0 YSAoY2FsbC13aXRoLWlucHV0LWZpbGUgcGFja2FnZS5qc29uIGpzb24tPnNjbSkpKQorICAgIChh c3NvYy1yZWYgcGFja2FnZS1tZXRhICJuYW1lIikpKQogCiAoZGVmaW5lIChpbmRleC1tb2R1bGVz IGlucHV0LXBhdGhzKQogICAoZGVmaW5lIChsaXN0LW1vZHVsZXMgZGlyZWN0b3J5KQpAQCAtMTY3 LDQ5ICsxMTQsNTYgQEAgKGRlZmluZSogKHBhdGNoLWRlcGVuZGVuY2llcyAjOmtleSBpbnB1dHMg IzphbGxvdy1vdGhlci1rZXlzKQogCiAgIChkZWZpbmUgaW5kZXggKGluZGV4LW1vZHVsZXMgKG1h cCBjZHIgaW5wdXRzKSkpCiAKLSAgKGRlZmluZSByZXNvbHZlLWRlcGVuZGVuY2llcwotICAgICht YXRjaC1sYW1iZGEKLSAgICAgICgoJ0AgLiBhbGlzdCkKLSAgICAgICAoY29ucyAnQCAobWFwICht YXRjaC1sYW1iZGEKLSAgICAgICAgICAgICAgICAgICAgICAgKChrZXkgLiB2YWx1ZSkKLSAgICAg ICAgICAgICAgICAgICAgICAgIChjb25zIGtleSAoaGFzaC1yZWYgaW5kZXgga2V5IHZhbHVlKSkp KQotICAgICAgICAgICAgICAgICAgICAgYWxpc3QpKSkpKQorICAoZGVmaW5lIChyZXNvbHZlLWRl cGVuZGVuY2llcyBkZXBlbmRlbmNpZXMpCisgICAgKG1hcAorICAgICAgKG1hdGNoLWxhbWJkYQor ICAgICAgICAoKGRlcGVuZGVuY3kgLiB2ZXJzaW9uKQorICAgICAgICAgIChjb25zIGRlcGVuZGVu Y3kgKGhhc2gtcmVmIGluZGV4IGRlcGVuZGVuY3kgdmVyc2lvbikpKSkKKyAgICAgIGRlcGVuZGVu Y2llcykpCiAKLSAgKHdpdGgtYXRvbWljLWpzb24tZmlsZS1yZXBsYWNlbWVudCAicGFja2FnZS5q c29uIgorICAod2l0aC1hdG9taWMtanNvbi1maWxlLXJlcGxhY2VtZW50CiAgICAgKGxhbWJkYSAo cGtnLW1ldGEpCi0gICAgICAoanNvYmplY3QtdXBkYXRlKgotICAgICAgIHBrZy1tZXRhCi0gICAg ICAgYCgiZGV2RGVwZW5kZW5jaWVzIiAscmVzb2x2ZS1kZXBlbmRlbmNpZXMgKEApKQotICAgICAg IGAoImRlcGVuZGVuY2llcyIgLChsYW1iZGEgKGRlcHMpCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAocmVzb2x2ZS1kZXBlbmRlbmNpZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAo anNvYmplY3QtdW5pb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoayBh IGIpIGIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChqc29iamVjdC1yZWYgcGtnLW1l dGEgInBlZXJEZXBlbmRlbmNpZXMiICcoQCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRlcHMpKSkKLSAgICAgICAgIChAKSkpKSkKKyAgICAgIChmb2xkCisgICAgICAgIChsYW1iZGEg KHByb2MgcGtnLW1ldGEpIChwcm9jIHBrZy1tZXRhKSkKKyAgICAgICAgcGtnLW1ldGEKKyAgICAg ICAgKGxpc3QKKyAgICAgICAgICAobGFtYmRhIChwa2ctbWV0YSkKKyAgICAgICAgICAgIChhbGlz dC11cGRhdGUgcGtnLW1ldGEgImRldkRlcGVuZGVuY2llcyIgcmVzb2x2ZS1kZXBlbmRlbmNpZXMp KQorICAgICAgICAgIChsYW1iZGEgKHBrZy1tZXRhKQorICAgICAgICAgICAgKGFzc29jLXNldCEK KyAgICAgICAgICAgICAgcGtnLW1ldGEKKyAgICAgICAgICAgICAgImRlcGVuZGVuY2llcyIKKyAg ICAgICAgICAgICAgKHJlc29sdmUtZGVwZW5kZW5jaWVzCisgICAgICAgICAgICAgICAgOyBDb21i aW5lZCAicGVlckRlcGVuZGVuY2llcyIgYW5kICJkZXBlbmRlbmNpZXMiIGRlcGVuZGVuY2llcwor ICAgICAgICAgICAgICAgIDsgd2l0aCAiZGVwZW5kZW5jaWVzIiB0YWtpbmcgcHJlY2VkZW50Lgor ICAgICAgICAgICAgICAgIChmb2xkCisgICAgICAgICAgICAgICAgICAobGFtYmRhIChkZXBlbmRl bmN5IGRlcGVuZGVuY2llcykKKyAgICAgICAgICAgICAgICAgICAgKGFzc29jLXNldCEgZGVwZW5k ZW5jaWVzIChjYXIgZGVwZW5kZW5jeSkgKGNkciBkZXBlbmRlbmN5KSkpCisgICAgICAgICAgICAg ICAgICAoYXNzb2MtcmVmKiBwa2ctbWV0YSAicGVlckRlcGVuZGVuY2llcyIgJygpKQorICAgICAg ICAgICAgICAgICAgKGFzc29jLXJlZiogcGtnLW1ldGEgImRlcGVuZGVuY2llcyIgJygpKQorICAg ICAgICAgICAgICAgICkpKSkpKSkpCiAgICN0KQogCi0oZGVmaW5lIChkZWxldGUtZGVwZW5kZW5j aWVzIGFic2VudCkKKyhkZWZpbmUgKGRlbGV0ZS1kZXBlbmRlbmNpZXMgZGVwZW5kZW5jaWVzLXRv LXJlbW92ZSkKICAgIlJld3JpdGUgJ3BhY2thZ2UuanNvbicgdG8gYWxsb3cgdGhlIGJ1aWxkIHRv IHByb2NlZWQgd2l0aG91dCBwYWNrYWdlcwotbGlzdGVkIGluIEFCU0VOVCwgYSBsaXN0IG9mIHN0 cmluZ3MgbmFtaW5nIG5wbSBwYWNrYWdlcy4KK2xpc3RlZCBpbiAnZGVwZW5kZW5jaWVzLXRvLXJl bW92ZScsIGEgbGlzdCBvZiBzdHJpbmdzIG5hbWluZyBucG0gcGFja2FnZXMuCiAKIFRvIHByZXZl bnQgdGhlIGRlbGV0ZWQgZGVwZW5kZW5jaWVzIGZyb20gYmVpbmcgcmVpbnRyb2R1Y2VkLCB1c2Ug dGhpcyBmdW5jdGlvbgogb25seSBhZnRlciB0aGUgJ3BhdGNoLWRlcGVuZGVuY2llcycgcGhhc2Uu IgotICAoZGVmaW5lIGRlbGV0ZS1mcm9tLWpzb2JqZWN0Ci0gICAgKG1hdGNoLWxhbWJkYQotICAg ICAgKCgnQCAuIGFsaXN0KQotICAgICAgIChjb25zICdAIChmaWx0ZXIgKG1hdGNoLWxhbWJkYQot ICAgICAgICAgICAgICAgICAgICAgICAgICAoKGsgLiBfKQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgKG5vdCAobWVtYmVyIGsgYWJzZW50KSkpKQotICAgICAgICAgICAgICAgICAgICAgICAg YWxpc3QpKSkpKQotCi0gICh3aXRoLWF0b21pYy1qc29uLWZpbGUtcmVwbGFjZW1lbnQgInBhY2th Z2UuanNvbiIKKyAgKHdpdGgtYXRvbWljLWpzb24tZmlsZS1yZXBsYWNlbWVudAogICAgIChsYW1i ZGEgKHBrZy1tZXRhKQotICAgICAgKGpzb2JqZWN0LXVwZGF0ZSoKLSAgICAgICBwa2ctbWV0YQot ICAgICAgIGAoImRldkRlcGVuZGVuY2llcyIgLGRlbGV0ZS1mcm9tLWpzb2JqZWN0IChAKSkKLSAg ICAgICBgKCJkZXBlbmRlbmNpZXMiICxkZWxldGUtZnJvbS1qc29iamVjdCAoQCkpCi0gICAgICAg YCgicGVlckRlcGVuZGVuY2llcyIgLGRlbGV0ZS1mcm9tLWpzb2JqZWN0IChAKSkpKSkpCisgICAg ICAoZm9sZAorICAgICAgICAobGFtYmRhIChkZXBlbmRlbmN5LWtleSBwa2ctbWV0YSkKKyAgICAg ICAgICAoYWxpc3QtdXBkYXRlCisgICAgICAgICAgICBwa2ctbWV0YQorICAgICAgICAgICAgZGVw ZW5kZW5jeS1rZXkKKyAgICAgICAgICAgIChsYW1iZGEgKGRlcGVuZGVuY2llcykKKyAgICAgICAg ICAgICAgKHJlbW92ZQorICAgICAgICAgICAgICAgIChsYW1iZGEgKGRlcGVuZGVuY3kpCisgICAg ICAgICAgICAgICAgICAobWVtYmVyIChjYXIgZGVwZW5kZW5jeSkgZGVwZW5kZW5jaWVzLXRvLXJl bW92ZSkpCisgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzKSkpKQorICAgICAgICBwa2ctbWV0 YQorICAgICAgICAobGlzdCAiZGV2RGVwZW5kZW5jaWVzIiAiZGVwZW5kZW5jaWVzIiAicGVlckRl cGVuZGVuY2llcyIgIm9wdGlvbmFsRGVwZW5kZW5jaWVzIikpKSkpCiAKIChkZWZpbmUqIChkZWxl dGUtbG9ja2ZpbGVzICM6a2V5IGlucHV0cyAjOmFsbG93LW90aGVyLWtleXMpCiAgICJEZWxldGUg J3BhY2thZ2UtbG9jay5qc29uJywgJ3lhcm4ubG9jaycsIGFuZCAnbnBtLXNocmlua3dyYXAuanNv bicsIGlmIHRoZXkKQEAgLTIyOCw4ICsxODIsOCBAQCAoZGVmaW5lKiAoY29uZmlndXJlICM6a2V5 IG91dHB1dHMgaW5wdXRzICM6YWxsb3ctb3RoZXIta2V5cykKICAgICAjdCkpCiAKIChkZWZpbmUq IChidWlsZCAjOmtleSBpbnB1dHMgIzphbGxvdy1vdGhlci1rZXlzKQotICAobGV0ICgocGFja2Fn ZS1tZXRhIChjYWxsLXdpdGgtaW5wdXQtZmlsZSAicGFja2FnZS5qc29uIiByZWFkLWpzb24pKSkK LSAgICAoaWYgKGpzb2JqZWN0LXJlZiAoanNvYmplY3QtcmVmIHBhY2thZ2UtbWV0YSAic2NyaXB0 cyIgJyhAKSkgImJ1aWxkIiAjZikKKyAgKGxldCAoKHBhY2thZ2UtbWV0YSAoY2FsbC13aXRoLWlu cHV0LWZpbGUgInBhY2thZ2UuanNvbiIganNvbi0+c2NtKSkpCisgICAgKGlmIChhc3NvYy1yZWYq IChhc3NvYy1yZWYqIHBhY2thZ2UtbWV0YSAic2NyaXB0cyIgJygpKSAiYnVpbGQiICNmKQogICAg ICAgICAobGV0ICgobnBtIChzdHJpbmctYXBwZW5kIChhc3NvYy1yZWYgaW5wdXRzICJub2RlIikg Ii9iaW4vbnBtIikpKQogICAgICAgICAgIChpbnZva2UgbnBtICJydW4iICJidWlsZCIpKQogICAg ICAgICAoZm9ybWF0ICN0ICJ0aGVyZSBpcyBubyBidWlsZCBzY3JpcHQgdG8gcnVufiUiKSkKQEAg LTMwMSwyMiArMjU1LDIwIEBAIChkZWZpbmUqIChhdm9pZC1ub2RlLWd5cC1yZWJ1aWxkICM6a2V5 IG91dHB1dHMgIzphbGxvdy1vdGhlci1rZXlzKQogICA7OyBldmVuIG5lZWQgdG8gb3ZlcndyaXRl IHRoaXMgZmlsZS4gIFRoZXJlZm9yZSwgbGV0J3MgdXNlIHNvbWUgaGVscGVycwogICA7OyB0aGF0 IHdlJ2Qgb3RoZXJ3aXNlIG5vdCBuZWVkLgogICAoZGVmaW5lIHBrZy1tZXRhCi0gICAgKGNhbGwt d2l0aC1pbnB1dC1maWxlIGluc3RhbGxlZC1wYWNrYWdlLmpzb24gcmVhZC1qc29uKSkKKyAgICAo Y2FsbC13aXRoLWlucHV0LWZpbGUgaW5zdGFsbGVkLXBhY2thZ2UuanNvbiBqc29uLT5zY20pKQog ICAoZGVmaW5lIHNjcmlwdHMKLSAgICAoanNvYmplY3QtcmVmIHBrZy1tZXRhICJzY3JpcHRzIiAn KEApKSkKLSAgKGRlZmluZSAoanNvYmplY3Qtc2V0IGpzIGtleSB2YWwpCi0gICAgKGpzb2JqZWN0 LXVwZGF0ZSoganMgKGxpc3Qga2V5IChjb25zdCB2YWwpKSkpCisgICAgKGFzc29jLXJlZiogcGtn LW1ldGEgInNjcmlwdHMiICcoKSkpCiAKLSAgKHdoZW4gKGVxdWFsPyAibm9kZS1neXAgcmVidWls ZCIgKGpzb2JqZWN0LXJlZiBzY3JpcHRzICJpbnN0YWxsIiAjZikpCisgICh3aGVuIChlcXVhbD8g Im5vZGUtZ3lwIHJlYnVpbGQiIChhc3NvYy1yZWYqIHNjcmlwdHMgImluc3RhbGwiICNmKSkKICAg ICAoY2FsbC13aXRoLW91dHB1dC1maWxlIGluc3RhbGxlZC1wYWNrYWdlLmpzb24KICAgICAgIChs YW1iZGEgKG91dCkKLSAgICAgICAgKHdyaXRlLWpzb24KLSAgICAgICAgIChqc29iamVjdC1zZXQg cGtnLW1ldGEKLSAgICAgICAgICAgICAgICAgICAgICAgInNjcmlwdHMiCi0gICAgICAgICAgICAg ICAgICAgICAgIChqc29iamVjdC1zZXQgc2NyaXB0cwotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJpbnN0YWxsIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJlY2hvIEd1aXg6IGF2b2lkaW5nIG5vZGUtZ3lwIHJlYnVpbGQiKSkKLSAgICAgICAgIG91 dCkpKSkpCisgICAgICAgIChzY20tPmpzb24KKyAgICAgICAgICAoYXNzb2Mtc2V0ISBwa2ctbWV0 YQorICAgICAgICAgICAgICAgICAgICAgICJzY3JpcHRzIgorICAgICAgICAgICAgICAgICAgICAg IChhc3NvYy1zZXQhIHNjcmlwdHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi aW5zdGFsbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZWNobyBHdWl4OiBh dm9pZGluZyBub2RlLWd5cCByZWJ1aWxkIikpCisgICAgICAgICAgb3V0KSkpKSkKIAogKGRlZmlu ZSAlc3RhbmRhcmQtcGhhc2VzCiAgIChtb2RpZnktcGhhc2VzIGdudTolc3RhbmRhcmQtcGhhc2Vz CgpiYXNlLWNvbW1pdDogY2ZkNGY1NmY3NWEyMGI2NzMyZDQ2MzE4MGQyMTFmNzk2YzkwMzJlNQot LSAKMi40Ni4wCgo= --00000000000035ee88062954efaa--
Daniel Khodabakhsh <d.khodabakhsh@HIDDEN>
:guix-patches@HIDDEN
.
Full text available.guix-patches@HIDDEN
:bug#74900
; Package guix-patches
.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.