This repository was archived by the owner on Nov 8, 2026. It is now read-only.
Repository navigation
Expand file tree
/
Copy pathbuf.pb.json
More file actions
1 lines (1 loc) · 404 KB
/
Copy pathbuf.pb.json
File metadata and controls
1 lines (1 loc) · 404 KB
1
{"file":[{"name":"google/protobuf/timestamp.proto","package":"google.protobuf","messageType":[{"name":"Timestamp","field":[{"name":"seconds","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_INT64","jsonName":"seconds"},{"name":"nanos","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_INT32","jsonName":"nanos"}]}],"options":{"javaPackage":"com.google.protobuf","javaOuterClassname":"TimestampProto","javaMultipleFiles":true,"goPackage":"google.golang.org/protobuf/types/known/timestamppb","ccEnableArenas":true,"objcClassPrefix":"GPB","csharpNamespace":"Google.Protobuf.WellKnownTypes"},"sourceCodeInfo":{"location":[{"span":[30,0,146,1]},{"path":[12],"span":[30,0,18],"leadingDetachedComments":[" Protocol Buffers - Google's data interchange format\n Copyright 2008 Google Inc. All rights reserved.\n https://developers.google.com/protocol-buffers/\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are\n met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\n copyright notice, this list of conditions and the following disclaimer\n in the documentation and/or other materials provided with the\n distribution.\n * Neither the name of Google Inc. nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"]},{"path":[2],"span":[32,0,24]},{"path":[8],"span":[34,0,59]},{"path":[8,37],"span":[34,0,59]},{"path":[8],"span":[35,0,31]},{"path":[8,31],"span":[35,0,31]},{"path":[8],"span":[36,0,73]},{"path":[8,11],"span":[36,0,73]},{"path":[8],"span":[37,0,44]},{"path":[8,1],"span":[37,0,44]},{"path":[8],"span":[38,0,47]},{"path":[8,8],"span":[38,0,47]},{"path":[8],"span":[39,0,34]},{"path":[8,10],"span":[39,0,34]},{"path":[8],"span":[40,0,33]},{"path":[8,36],"span":[40,0,33]},{"path":[4,0],"span":[135,0,146,1],"leadingComments":" A Timestamp represents a point in time independent of any time zone or local\n calendar, encoded as a count of seconds and fractions of seconds at\n nanosecond resolution. The count is relative to an epoch at UTC midnight on\n January 1, 1970, in the proleptic Gregorian calendar which extends the\n Gregorian calendar backwards to year one.\n\n All minutes are 60 seconds long. Leap seconds are \"smeared\" so that no leap\n second table is needed for interpretation, using a [24-hour linear\n smear](https://developers.google.com/time/smear).\n\n The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By\n restricting to that range, we ensure that we can convert to and from [RFC\n 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.\n\n # Examples\n\n Example 1: Compute Timestamp from POSIX `time()`.\n\n Timestamp timestamp;\n timestamp.set_seconds(time(NULL));\n timestamp.set_nanos(0);\n\n Example 2: Compute Timestamp from POSIX `gettimeofday()`.\n\n struct timeval tv;\n gettimeofday(&tv, NULL);\n\n Timestamp timestamp;\n timestamp.set_seconds(tv.tv_sec);\n timestamp.set_nanos(tv.tv_usec * 1000);\n\n Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.\n\n FILETIME ft;\n GetSystemTimeAsFileTime(&ft);\n UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;\n\n // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z\n // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.\n Timestamp timestamp;\n timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));\n timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));\n\n Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.\n\n long millis = System.currentTimeMillis();\n\n Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)\n .setNanos((int) ((millis % 1000) * 1000000)).build();\n\n\n Example 5: Compute Timestamp from Java `Instant.now()`.\n\n Instant now = Instant.now();\n\n Timestamp timestamp =\n Timestamp.newBuilder().setSeconds(now.getEpochSecond())\n .setNanos(now.getNano()).build();\n\n\n Example 6: Compute Timestamp from current time in Python.\n\n timestamp = Timestamp()\n timestamp.GetCurrentTime()\n\n # JSON Mapping\n\n In JSON format, the Timestamp type is encoded as a string in the\n [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the\n format is \"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z\"\n where {year} is always expressed using four digits while {month}, {day},\n {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional\n seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),\n are optional. The \"Z\" suffix indicates the timezone (\"UTC\"); the timezone\n is required. A proto3 JSON serializer should always use UTC (as indicated by\n \"Z\") when printing the Timestamp type and a proto3 JSON parser should be\n able to accept both UTC and other timezones (as indicated by an offset).\n\n For example, \"2017-01-15T01:30:15.01Z\" encodes 15.01 seconds past\n 01:30 UTC on January 15, 2017.\n\n In JavaScript, one can convert a Date object to this format using the\n standard\n [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)\n method. In Python, a standard `datetime.datetime` object can be converted\n to this format using\n [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with\n the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use\n the Joda Time's [`ISODateTimeFormat.dateTime()`](\n http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime%2D%2D\n ) to obtain a formatter capable of generating timestamps in this format.\n\n\n"},{"path":[4,0,1],"span":[135,8,17]},{"path":[4,0,2,0],"span":[139,2,20],"leadingComments":" Represents seconds of UTC time since Unix epoch\n 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to\n 9999-12-31T23:59:59Z inclusive.\n"},{"path":[4,0,2,0,5],"span":[139,2,7]},{"path":[4,0,2,0,1],"span":[139,8,15]},{"path":[4,0,2,0,3],"span":[139,18,19]},{"path":[4,0,2,1],"span":[145,2,18],"leadingComments":" Non-negative fractions of a second at nanosecond resolution. Negative\n second values with fractions must still have non-negative nanos values\n that count forward in time. Must be from 0 to 999,999,999\n inclusive.\n"},{"path":[4,0,2,1,5],"span":[145,2,7]},{"path":[4,0,2,1,1],"span":[145,8,13]},{"path":[4,0,2,1,3],"span":[145,16,17]}]},"syntax":"proto3","bufExtension":{"isImport":true,"isSyntaxUnspecified":false}},{"name":"elide/crypto/crypto.proto","package":"elide.crypto","enumType":[{"name":"HashAlgorithm","value":[{"name":"IDENTITY","number":0},{"name":"MD5","number":1},{"name":"SHA1","number":2},{"name":"SHA256","number":3},{"name":"SHA512","number":4},{"name":"SHA3_224","number":5},{"name":"SHA3_256","number":6},{"name":"SHA3_512","number":7}]}],"options":{"javaPackage":"tools.elide.crypto","javaMultipleFiles":true,"javaStringCheckUtf8":true,"optimizeFor":"CODE_SIZE","goPackage":"github.com/elide-tools/elide/crypto;crypto","ccEnableArenas":true,"objcClassPrefix":"ELD","csharpNamespace":"Elide.Crypto","swiftPrefix":"Elide","phpClassPrefix":"ELD"},"sourceCodeInfo":{"location":[{"span":[17,0,58,1]},{"path":[12],"span":[17,0,18],"leadingComments":"\n Specifies core structures related to cryptographic operations and primitives. These records and enumerates are used\n throughout the codebase as a standard base set of definitions for hashing, encryption, and more.\n","leadingDetachedComments":["\n Copyright © 2022, The Elide Framework Authors. All rights reserved.\n\n The Gust/Elide framework and tools, and all associated source or object computer code, except where otherwise noted,\n are licensed under the Zero Prosperity license, which is enclosed in this repository, in the file LICENSE.txt. Use of\n this code in object or source form requires and implies consent and agreement to that license in principle and\n practice. Source or object code not listing this header, or unless specified otherwise, remain the property of\n Elide LLC and its suppliers, if any. The intellectual and technical concepts contained herein are proprietary to\n Elide LLC and its suppliers and may be covered by U.S. and Foreign Patents, or patents in process, and are protected\n by trade secret and copyright law. Dissemination of this information, or reproduction of this material, in any form,\n is strictly forbidden except in adherence with assigned license requirements.\n"]},{"path":[2],"span":[18,0,21]},{"path":[8],"span":[20,0,32]},{"path":[8,9],"span":[20,0,32]},{"path":[8],"span":[21,0,31]},{"path":[8,31],"span":[21,0,31]},{"path":[8],"span":[22,0,34]},{"path":[8,10],"span":[22,0,34]},{"path":[8],"span":[23,0,37]},{"path":[8,27],"span":[23,0,37]},{"path":[8],"span":[24,0,32]},{"path":[8,40],"span":[24,0,32]},{"path":[8],"span":[25,0,30]},{"path":[8,39],"span":[25,0,30]},{"path":[8],"span":[26,0,33]},{"path":[8,36],"span":[26,0,33]},{"path":[8],"span":[27,0,43]},{"path":[8,1],"span":[27,0,43]},{"path":[8],"span":[28,0,41]},{"path":[8,37],"span":[28,0,41]},{"path":[8],"span":[29,0,65]},{"path":[8,11],"span":[29,0,65]},{"path":[5,0],"span":[34,0,58,1],"leadingComments":" Specifies hash algorithms supported by the asset manifest code. We keep a token for this around so that we can\n easily detect configuration changes and make evictions accordingly.\n"},{"path":[5,0,1],"span":[34,5,18]},{"path":[5,0,2,0],"span":[36,2,15],"leadingComments":" No hash algorithm was/is active.\n"},{"path":[5,0,2,0,1],"span":[36,2,10]},{"path":[5,0,2,0,2],"span":[36,13,14]},{"path":[5,0,2,1],"span":[39,2,10],"leadingComments":" Algorithm: MD5.\n"},{"path":[5,0,2,1,1],"span":[39,2,5]},{"path":[5,0,2,1,2],"span":[39,8,9]},{"path":[5,0,2,2],"span":[42,2,11],"leadingComments":" Algorithm: SHA1.\n"},{"path":[5,0,2,2,1],"span":[42,2,6]},{"path":[5,0,2,2,2],"span":[42,9,10]},{"path":[5,0,2,3],"span":[45,2,13],"leadingComments":" Algorithm: SHA-256.\n"},{"path":[5,0,2,3,1],"span":[45,2,8]},{"path":[5,0,2,3,2],"span":[45,11,12]},{"path":[5,0,2,4],"span":[48,2,13],"leadingComments":" Algorithm: SHA-512.\n"},{"path":[5,0,2,4,1],"span":[48,2,8]},{"path":[5,0,2,4,2],"span":[48,11,12]},{"path":[5,0,2,5],"span":[51,2,15],"leadingComments":" Algorithm: SHA3-224.\n"},{"path":[5,0,2,5,1],"span":[51,2,10]},{"path":[5,0,2,5,2],"span":[51,13,14]},{"path":[5,0,2,6],"span":[54,2,15],"leadingComments":" Algorithm: SHA3-256.\n"},{"path":[5,0,2,6,1],"span":[54,2,10]},{"path":[5,0,2,6,2],"span":[54,13,14]},{"path":[5,0,2,7],"span":[57,2,15],"leadingComments":" Algorithm: SHA3-512.\n"},{"path":[5,0,2,7,1],"span":[57,2,10]},{"path":[5,0,2,7,2],"span":[57,13,14]}]},"syntax":"proto3","bufExtension":{"isImport":false,"isSyntaxUnspecified":false}},{"name":"elide/data/encoding.proto","package":"elide.data","enumType":[{"name":"Encoding","value":[{"name":"UTF_8","number":0},{"name":"UTF_16","number":1},{"name":"UTF_32","number":2}]}],"options":{"javaPackage":"tools.elide.data","javaMultipleFiles":true,"javaStringCheckUtf8":true,"optimizeFor":"CODE_SIZE","goPackage":"github.com/elide-tools/elide/data;data","ccEnableArenas":true,"objcClassPrefix":"ELD","csharpNamespace":"Elide.Data","swiftPrefix":"Elide","phpClassPrefix":"ELD"},"sourceCodeInfo":{"location":[{"span":[16,0,43,1]},{"path":[12],"span":[16,0,18],"leadingComments":"\n Specifies data encoding definitions, enumerations, and structures.\n","leadingDetachedComments":["\n Copyright © 2022, The Elide Framework Authors. All rights reserved.\n\n The Gust/Elide framework and tools, and all associated source or object computer code, except where otherwise noted,\n are licensed under the Zero Prosperity license, which is enclosed in this repository, in the file LICENSE.txt. Use of\n this code in object or source form requires and implies consent and agreement to that license in principle and\n practice. Source or object code not listing this header, or unless specified otherwise, remain the property of\n Elide LLC and its suppliers, if any. The intellectual and technical concepts contained herein are proprietary to\n Elide LLC and its suppliers and may be covered by U.S. and Foreign Patents, or patents in process, and are protected\n by trade secret and copyright law. Dissemination of this information, or reproduction of this material, in any form,\n is strictly forbidden except in adherence with assigned license requirements.\n"]},{"path":[2],"span":[17,0,19]},{"path":[8],"span":[19,0,32]},{"path":[8,9],"span":[19,0,32]},{"path":[8],"span":[20,0,31]},{"path":[8,31],"span":[20,0,31]},{"path":[8],"span":[21,0,34]},{"path":[8,10],"span":[21,0,34]},{"path":[8],"span":[22,0,37]},{"path":[8,27],"span":[22,0,37]},{"path":[8],"span":[23,0,32]},{"path":[8,40],"span":[23,0,32]},{"path":[8],"span":[24,0,30]},{"path":[8,39],"span":[24,0,30]},{"path":[8],"span":[25,0,33]},{"path":[8,36],"span":[25,0,33]},{"path":[8],"span":[26,0,41]},{"path":[8,1],"span":[26,0,41]},{"path":[8],"span":[27,0,39]},{"path":[8,37],"span":[27,0,39]},{"path":[8],"span":[28,0,61]},{"path":[8,11],"span":[28,0,61]},{"path":[5,0],"span":[34,0,43,1],"leadingComments":" Data Encoding\n\n Describes supported file encodings. By default, files are encoded with `UTF-8`.\n"},{"path":[5,0,1],"span":[34,5,13]},{"path":[5,0,2,0],"span":[36,2,12],"leadingComments":" Default encoding: UTF-8.\n"},{"path":[5,0,2,0,1],"span":[36,2,7]},{"path":[5,0,2,0,2],"span":[36,10,11]},{"path":[5,0,2,1],"span":[39,2,13],"leadingComments":" Encoding: UTF-16.\n"},{"path":[5,0,2,1,1],"span":[39,2,8]},{"path":[5,0,2,1,2],"span":[39,11,12]},{"path":[5,0,2,2],"span":[42,2,13],"leadingComments":" Encoding: UTF-32.\n"},{"path":[5,0,2,2,1],"span":[42,2,8]},{"path":[5,0,2,2,2],"span":[42,11,12]}]},"syntax":"proto3","bufExtension":{"isImport":false,"isSyntaxUnspecified":false}},{"name":"elide/data/data.proto","package":"elide.data","dependency":["elide/crypto/crypto.proto","elide/data/encoding.proto"],"messageType":[{"name":"DataFingerprint","field":[{"name":"hash","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".elide.crypto.HashAlgorithm","jsonName":"hash"},{"name":"salt","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_BYTES","jsonName":"salt"},{"name":"fingerprint","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_BYTES","jsonName":"fingerprint"},{"name":"encoding","number":4,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".elide.data.Encoding","jsonName":"encoding"}]},{"name":"DataContainer","field":[{"name":"raw","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_BYTES","jsonName":"raw"},{"name":"integrity","number":2,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".elide.data.DataFingerprint","jsonName":"integrity"},{"name":"encoding","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".elide.data.Encoding","jsonName":"encoding"}]},{"name":"CompressedData","field":[{"name":"compression","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".elide.data.CompressionMode","jsonName":"compression"},{"name":"data","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.data.DataContainer","jsonName":"data"},{"name":"size","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_UINT64","jsonName":"size"},{"name":"integrity","number":4,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".elide.data.DataFingerprint","jsonName":"integrity"}]},{"name":"DataContainerRef","field":[{"name":"data","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.data.CompressedData","oneofIndex":0,"jsonName":"data"},{"name":"resource","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.data.DataContainerRef.FingerprintPathPair","oneofIndex":0,"jsonName":"resource"},{"name":"filesystem","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.data.DataContainerRef.FingerprintPathPair","oneofIndex":0,"jsonName":"filesystem"}],"nestedType":[{"name":"FingerprintPathPair","field":[{"name":"fingerprint","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.data.DataFingerprint","jsonName":"fingerprint"},{"name":"path","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"path"}]}],"oneofDecl":[{"name":"reference"}]}],"enumType":[{"name":"CompressionMode","value":[{"name":"IDENTITY","number":0},{"name":"GZIP","number":1},{"name":"BROTLI","number":2},{"name":"SNAPPY","number":3},{"name":"DEFLATE","number":4}]}],"options":{"javaPackage":"tools.elide.data","javaMultipleFiles":true,"javaStringCheckUtf8":true,"optimizeFor":"SPEED","goPackage":"github.com/elide-tools/elide/data;data","ccEnableArenas":true,"objcClassPrefix":"ELD","csharpNamespace":"Elide.Data","swiftPrefix":"Elide","phpClassPrefix":"ELD"},"sourceCodeInfo":{"location":[{"span":[17,0,131,1]},{"path":[12],"span":[17,0,18],"leadingComments":"\n Specifies core structures related to cryptographic operations and primitives. These records and enumerates are used\n throughout the codebase as a standard base set of definitions for hashing, encryption, and more.\n","leadingDetachedComments":["\n Copyright © 2022, The Elide Framework Authors. All rights reserved.\n\n The Gust/Elide framework and tools, and all associated source or object computer code, except where otherwise noted,\n are licensed under the Zero Prosperity license, which is enclosed in this repository, in the file LICENSE.txt. Use of\n this code in object or source form requires and implies consent and agreement to that license in principle and\n practice. Source or object code not listing this header, or unless specified otherwise, remain the property of\n Elide LLC and its suppliers, if any. The intellectual and technical concepts contained herein are proprietary to\n Elide LLC and its suppliers and may be covered by U.S. and Foreign Patents, or patents in process, and are protected\n by trade secret and copyright law. Dissemination of this information, or reproduction of this material, in any form,\n is strictly forbidden except in adherence with assigned license requirements.\n"]},{"path":[2],"span":[18,0,19]},{"path":[8],"span":[20,0,28]},{"path":[8,9],"span":[20,0,28]},{"path":[8],"span":[21,0,31]},{"path":[8,31],"span":[21,0,31]},{"path":[8],"span":[22,0,34]},{"path":[8,10],"span":[22,0,34]},{"path":[8],"span":[23,0,37]},{"path":[8,27],"span":[23,0,37]},{"path":[8],"span":[24,0,32]},{"path":[8,40],"span":[24,0,32]},{"path":[8],"span":[25,0,30]},{"path":[8,39],"span":[25,0,30]},{"path":[8],"span":[26,0,33]},{"path":[8,36],"span":[26,0,33]},{"path":[8],"span":[27,0,41]},{"path":[8,1],"span":[27,0,41]},{"path":[8],"span":[28,0,39]},{"path":[8,37],"span":[28,0,39]},{"path":[8],"span":[29,0,61]},{"path":[8,11],"span":[29,0,61]},{"path":[3,0],"span":[31,0,35]},{"path":[3,1],"span":[32,0,35]},{"path":[5,0],"span":[37,0,52,1],"leadingComments":" Specifies compression modes that are supported by the framework for pre-compressed assets stored inline within the\n manifest. These inlined assets do not replace original source assets, which are enclosed in the resource JAR.\n"},{"path":[5,0,1],"span":[37,5,20]},{"path":[5,0,2,0],"span":[39,2,15],"leadingComments":" No compression.\n"},{"path":[5,0,2,0,1],"span":[39,2,10]},{"path":[5,0,2,0,2],"span":[39,13,14]},{"path":[5,0,2,1],"span":[42,2,11],"leadingComments":" Standard gzip-based compression.\n"},{"path":[5,0,2,1,1],"span":[42,2,6]},{"path":[5,0,2,1,2],"span":[42,9,10]},{"path":[5,0,2,2],"span":[45,2,13],"leadingComments":" Brotli-based compression.\n"},{"path":[5,0,2,2,1],"span":[45,2,8]},{"path":[5,0,2,2,2],"span":[45,11,12]},{"path":[5,0,2,3],"span":[48,2,13],"leadingComments":" Snappy-based compression.\n"},{"path":[5,0,2,3,1],"span":[48,2,8]},{"path":[5,0,2,3,2],"span":[48,11,12]},{"path":[5,0,2,4],"span":[51,2,14],"leadingComments":" Deflate (zlib)-based compression.\n"},{"path":[5,0,2,4,1],"span":[51,2,9]},{"path":[5,0,2,4,2],"span":[51,12,13]},{"path":[4,0],"span":[57,0,70,1],"leadingComments":" Stores a generic cryptographic fingerprint of some arbitrary data. This is a utility record, which simply gathers the\n specification of a hash algorithm with a raw data field storing the result of the hash.\n"},{"path":[4,0,1],"span":[57,8,23]},{"path":[4,0,2,0],"span":[59,2,32],"leadingComments":" Algorithm in use when fingerprinting the associated data.\n"},{"path":[4,0,2,0,6],"span":[59,2,22]},{"path":[4,0,2,0,1],"span":[59,23,27]},{"path":[4,0,2,0,3],"span":[59,30,31]},{"path":[4,0,2,1],"span":[63,2,17],"leadingComments":" Salt value used when fingerprinting the associated data, if applicable. Generally appended to the end of the data\n to be fingerprinted.\n"},{"path":[4,0,2,1,5],"span":[63,2,7]},{"path":[4,0,2,1,1],"span":[63,8,12]},{"path":[4,0,2,1,3],"span":[63,15,16]},{"path":[4,0,2,2],"span":[66,2,24],"leadingComments":" Content of the fingerprint/checksum calculated as part of this data fingerprint.\n"},{"path":[4,0,2,2,5],"span":[66,2,7]},{"path":[4,0,2,2,1],"span":[66,8,19]},{"path":[4,0,2,2,3],"span":[66,22,23]},{"path":[4,0,2,3],"span":[69,2,29],"leadingComments":" Specifies the encoding for the affixed fingerprint data. If unspecified, the fingerprint is expressed in raw bytes.\n"},{"path":[4,0,2,3,6],"span":[69,2,15]},{"path":[4,0,2,3,1],"span":[69,16,24]},{"path":[4,0,2,3,3],"span":[69,27,28]},{"path":[4,1],"span":[75,0,85,1],"leadingComments":" Specifies an arbitrary container, which is used to hold raw data, along with the optional specification of a\n cryptographic fingerprint calculated from the data.\n"},{"path":[4,1,1],"span":[75,8,21]},{"path":[4,1,2,0],"span":[77,2,16],"leadingComments":" Raw bytes for the data referenced by this container.\n"},{"path":[4,1,2,0,5],"span":[77,2,7]},{"path":[4,1,2,0,1],"span":[77,8,11]},{"path":[4,1,2,0,3],"span":[77,14,15]},{"path":[4,1,2,1],"span":[81,2,41],"leadingComments":" Specifies an (optional) integrity fingerprint that may be used to verify the consistency of the underlying data\n held by this data container.\n"},{"path":[4,1,2,1,4],"span":[81,2,10]},{"path":[4,1,2,1,6],"span":[81,11,26]},{"path":[4,1,2,1,1],"span":[81,27,36]},{"path":[4,1,2,1,3],"span":[81,39,40]},{"path":[4,1,2,2],"span":[84,2,29],"leadingComments":" Specifies the encoding for the affixed container data. If unspecified, the data is expressed in raw bytes.\n"},{"path":[4,1,2,2,6],"span":[84,2,15]},{"path":[4,1,2,2,1],"span":[84,16,24]},{"path":[4,1,2,2,3],"span":[84,27,28]},{"path":[4,2],"span":[90,0,105,1],"leadingComments":" Generic container for compressed data, which simply combines an enumerated `CompressionMode` with a blob of raw bytes\n which are expected to be compressed by the specified algorithm or tool.\n"},{"path":[4,2,1],"span":[90,8,22]},{"path":[4,2,2,0],"span":[92,2,34],"leadingComments":" Compression mode applied to this data. If no compression is active, `IDENTITY` may be specified as a default.\n"},{"path":[4,2,2,0,6],"span":[92,2,17]},{"path":[4,2,2,0,1],"span":[92,18,29]},{"path":[4,2,2,0,3],"span":[92,32,33]},{"path":[4,2,2,1],"span":[96,2,25],"leadingComments":" Container holding the raw compressed data, and a fingerprint of the data in compressed form. This is unmodified raw\n bytes, aside from being compressed by the algorithm specified by `compression`.\n"},{"path":[4,2,2,1,6],"span":[96,2,15]},{"path":[4,2,2,1,1],"span":[96,16,20]},{"path":[4,2,2,1,3],"span":[96,23,24]},{"path":[4,2,2,2],"span":[100,2,18],"leadingComments":" Size of the asset data before compression. To obtain the size of the data in compressed form, simply take the\n length of the data field itself. This value is expressed in bytes.\n"},{"path":[4,2,2,2,5],"span":[100,2,8]},{"path":[4,2,2,2,1],"span":[100,9,13]},{"path":[4,2,2,2,3],"span":[100,16,17]},{"path":[4,2,2,3],"span":[104,2,41],"leadingComments":" Holds an (optional) integrity fingerprint, calculated from the held data *before* compression, which maybe used to\n verify the consistency of the data held by this container after de-compression.\n"},{"path":[4,2,2,3,4],"span":[104,2,10]},{"path":[4,2,2,3,6],"span":[104,11,26]},{"path":[4,2,2,3,1],"span":[104,27,36]},{"path":[4,2,2,3,3],"span":[104,39,40]},{"path":[4,3],"span":[109,0,131,1],"leadingComments":" Specifies the structure of a data container which can also be a reference to a different resource or file-system\n style-asset. Only one reference value may be filled in.\n"},{"path":[4,3,1],"span":[109,8,24]},{"path":[4,3,3,0],"span":[111,2,117,3],"leadingComments":" Specifies a fingerprint and path pair.\n"},{"path":[4,3,3,0,1],"span":[111,10,29]},{"path":[4,3,3,0,2,0],"span":[113,4,36],"leadingComments":" Specifies the fingerprint information associated with, or calculated for, the subject info.\n"},{"path":[4,3,3,0,2,0,6],"span":[113,4,19]},{"path":[4,3,3,0,2,0,1],"span":[113,20,31]},{"path":[4,3,3,0,2,0,3],"span":[113,34,35]},{"path":[4,3,3,0,2,1],"span":[116,4,20],"leadingComments":" Specifies the path for this data container reference.\n"},{"path":[4,3,3,0,2,1,5],"span":[116,4,10]},{"path":[4,3,3,0,2,1,1],"span":[116,11,15]},{"path":[4,3,3,0,2,1,3],"span":[116,18,19]},{"path":[4,3,8,0],"span":[120,2,130,3],"leadingComments":" Specifies the reference subject for this record.\n"},{"path":[4,3,8,0,1],"span":[120,8,17]},{"path":[4,3,2,0],"span":[123,4,28],"leadingComments":" Specifies raw data which is enclosed as a value with this reference. In this case, a data blob and fingerprint\n are enclosed inline within the protocol buffer.\n"},{"path":[4,3,2,0,6],"span":[123,4,18]},{"path":[4,3,2,0,1],"span":[123,19,23]},{"path":[4,3,2,0,3],"span":[123,26,27]},{"path":[4,3,2,1],"span":[126,4,37],"leadingComments":" Specifies a reference to a file resident in the application JAR or native image.\n"},{"path":[4,3,2,1,6],"span":[126,4,23]},{"path":[4,3,2,1,1],"span":[126,24,32]},{"path":[4,3,2,1,3],"span":[126,35,36]},{"path":[4,3,2,2],"span":[129,4,39],"leadingComments":" Specifies a reference to a file resident on the filesystem outside of the built application.\n"},{"path":[4,3,2,2,6],"span":[129,4,23]},{"path":[4,3,2,2,1],"span":[129,24,34]},{"path":[4,3,2,2,3],"span":[129,37,38]}]},"syntax":"proto3","bufExtension":{"isImport":false,"isSyntaxUnspecified":false}},{"name":"google/protobuf/descriptor.proto","package":"google.protobuf","messageType":[{"name":"FileDescriptorSet","field":[{"name":"file","number":1,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".google.protobuf.FileDescriptorProto","jsonName":"file"}]},{"name":"FileDescriptorProto","field":[{"name":"name","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"name"},{"name":"package","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"package"},{"name":"dependency","number":3,"label":"LABEL_REPEATED","type":"TYPE_STRING","jsonName":"dependency"},{"name":"public_dependency","number":10,"label":"LABEL_REPEATED","type":"TYPE_INT32","jsonName":"publicDependency"},{"name":"weak_dependency","number":11,"label":"LABEL_REPEATED","type":"TYPE_INT32","jsonName":"weakDependency"},{"name":"message_type","number":4,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".google.protobuf.DescriptorProto","jsonName":"messageType"},{"name":"enum_type","number":5,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".google.protobuf.EnumDescriptorProto","jsonName":"enumType"},{"name":"service","number":6,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".google.protobuf.ServiceDescriptorProto","jsonName":"service"},{"name":"extension","number":7,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".google.protobuf.FieldDescriptorProto","jsonName":"extension"},{"name":"options","number":8,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".google.protobuf.FileOptions","jsonName":"options"},{"name":"source_code_info","number":9,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".google.protobuf.SourceCodeInfo","jsonName":"sourceCodeInfo"},{"name":"syntax","number":12,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"syntax"}]},{"name":"DescriptorProto","field":[{"name":"name","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"name"},{"name":"field","number":2,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".google.protobuf.FieldDescriptorProto","jsonName":"field"},{"name":"extension","number":6,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".google.protobuf.FieldDescriptorProto","jsonName":"extension"},{"name":"nested_type","number":3,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".google.protobuf.DescriptorProto","jsonName":"nestedType"},{"name":"enum_type","number":4,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".google.protobuf.EnumDescriptorProto","jsonName":"enumType"},{"name":"extension_range","number":5,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".google.protobuf.DescriptorProto.ExtensionRange","jsonName":"extensionRange"},{"name":"oneof_decl","number":8,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".google.protobuf.OneofDescriptorProto","jsonName":"oneofDecl"},{"name":"options","number":7,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".google.protobuf.MessageOptions","jsonName":"options"},{"name":"reserved_range","number":9,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".google.protobuf.DescriptorProto.ReservedRange","jsonName":"reservedRange"},{"name":"reserved_name","number":10,"label":"LABEL_REPEATED","type":"TYPE_STRING","jsonName":"reservedName"}],"nestedType":[{"name":"ExtensionRange","field":[{"name":"start","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_INT32","jsonName":"start"},{"name":"end","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_INT32","jsonName":"end"},{"name":"options","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".google.protobuf.ExtensionRangeOptions","jsonName":"options"}]},{"name":"ReservedRange","field":[{"name":"start","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_INT32","jsonName":"start"},{"name":"end","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_INT32","jsonName":"end"}]}]},{"name":"ExtensionRangeOptions","field":[{"name":"uninterpreted_option","number":999,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".google.protobuf.UninterpretedOption","jsonName":"uninterpretedOption"}],"extensionRange":[{"start":1000,"end":536870912}]},{"name":"FieldDescriptorProto","field":[{"name":"name","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"name"},{"name":"number","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_INT32","jsonName":"number"},{"name":"label","number":4,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".google.protobuf.FieldDescriptorProto.Label","jsonName":"label"},{"name":"type","number":5,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".google.protobuf.FieldDescriptorProto.Type","jsonName":"type"},{"name":"type_name","number":6,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"typeName"},{"name":"extendee","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"extendee"},{"name":"default_value","number":7,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"defaultValue"},{"name":"oneof_index","number":9,"label":"LABEL_OPTIONAL","type":"TYPE_INT32","jsonName":"oneofIndex"},{"name":"json_name","number":10,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"jsonName"},{"name":"options","number":8,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".google.protobuf.FieldOptions","jsonName":"options"},{"name":"proto3_optional","number":17,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"proto3Optional"}],"enumType":[{"name":"Type","value":[{"name":"TYPE_DOUBLE","number":1},{"name":"TYPE_FLOAT","number":2},{"name":"TYPE_INT64","number":3},{"name":"TYPE_UINT64","number":4},{"name":"TYPE_INT32","number":5},{"name":"TYPE_FIXED64","number":6},{"name":"TYPE_FIXED32","number":7},{"name":"TYPE_BOOL","number":8},{"name":"TYPE_STRING","number":9},{"name":"TYPE_GROUP","number":10},{"name":"TYPE_MESSAGE","number":11},{"name":"TYPE_BYTES","number":12},{"name":"TYPE_UINT32","number":13},{"name":"TYPE_ENUM","number":14},{"name":"TYPE_SFIXED32","number":15},{"name":"TYPE_SFIXED64","number":16},{"name":"TYPE_SINT32","number":17},{"name":"TYPE_SINT64","number":18}]},{"name":"Label","value":[{"name":"LABEL_OPTIONAL","number":1},{"name":"LABEL_REQUIRED","number":2},{"name":"LABEL_REPEATED","number":3}]}]},{"name":"OneofDescriptorProto","field":[{"name":"name","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"name"},{"name":"options","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".google.protobuf.OneofOptions","jsonName":"options"}]},{"name":"EnumDescriptorProto","field":[{"name":"name","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"name"},{"name":"value","number":2,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".google.protobuf.EnumValueDescriptorProto","jsonName":"value"},{"name":"options","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".google.protobuf.EnumOptions","jsonName":"options"},{"name":"reserved_range","number":4,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".google.protobuf.EnumDescriptorProto.EnumReservedRange","jsonName":"reservedRange"},{"name":"reserved_name","number":5,"label":"LABEL_REPEATED","type":"TYPE_STRING","jsonName":"reservedName"}],"nestedType":[{"name":"EnumReservedRange","field":[{"name":"start","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_INT32","jsonName":"start"},{"name":"end","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_INT32","jsonName":"end"}]}]},{"name":"EnumValueDescriptorProto","field":[{"name":"name","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"name"},{"name":"number","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_INT32","jsonName":"number"},{"name":"options","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".google.protobuf.EnumValueOptions","jsonName":"options"}]},{"name":"ServiceDescriptorProto","field":[{"name":"name","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"name"},{"name":"method","number":2,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".google.protobuf.MethodDescriptorProto","jsonName":"method"},{"name":"options","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".google.protobuf.ServiceOptions","jsonName":"options"}]},{"name":"MethodDescriptorProto","field":[{"name":"name","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"name"},{"name":"input_type","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"inputType"},{"name":"output_type","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"outputType"},{"name":"options","number":4,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".google.protobuf.MethodOptions","jsonName":"options"},{"name":"client_streaming","number":5,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","defaultValue":"false","jsonName":"clientStreaming"},{"name":"server_streaming","number":6,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","defaultValue":"false","jsonName":"serverStreaming"}]},{"name":"FileOptions","field":[{"name":"java_package","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"javaPackage"},{"name":"java_outer_classname","number":8,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"javaOuterClassname"},{"name":"java_multiple_files","number":10,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","defaultValue":"false","jsonName":"javaMultipleFiles"},{"name":"java_generate_equals_and_hash","number":20,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"javaGenerateEqualsAndHash","options":{"deprecated":true}},{"name":"java_string_check_utf8","number":27,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","defaultValue":"false","jsonName":"javaStringCheckUtf8"},{"name":"optimize_for","number":9,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".google.protobuf.FileOptions.OptimizeMode","defaultValue":"SPEED","jsonName":"optimizeFor"},{"name":"go_package","number":11,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"goPackage"},{"name":"cc_generic_services","number":16,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","defaultValue":"false","jsonName":"ccGenericServices"},{"name":"java_generic_services","number":17,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","defaultValue":"false","jsonName":"javaGenericServices"},{"name":"py_generic_services","number":18,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","defaultValue":"false","jsonName":"pyGenericServices"},{"name":"php_generic_services","number":42,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","defaultValue":"false","jsonName":"phpGenericServices"},{"name":"deprecated","number":23,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","defaultValue":"false","jsonName":"deprecated"},{"name":"cc_enable_arenas","number":31,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","defaultValue":"true","jsonName":"ccEnableArenas"},{"name":"objc_class_prefix","number":36,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"objcClassPrefix"},{"name":"csharp_namespace","number":37,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"csharpNamespace"},{"name":"swift_prefix","number":39,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"swiftPrefix"},{"name":"php_class_prefix","number":40,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"phpClassPrefix"},{"name":"php_namespace","number":41,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"phpNamespace"},{"name":"php_metadata_namespace","number":44,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"phpMetadataNamespace"},{"name":"ruby_package","number":45,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"rubyPackage"},{"name":"uninterpreted_option","number":999,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".google.protobuf.UninterpretedOption","jsonName":"uninterpretedOption"}],"enumType":[{"name":"OptimizeMode","value":[{"name":"SPEED","number":1},{"name":"CODE_SIZE","number":2},{"name":"LITE_RUNTIME","number":3}]}],"extensionRange":[{"start":1000,"end":536870912}],"reservedRange":[{"start":38,"end":39}]},{"name":"MessageOptions","field":[{"name":"message_set_wire_format","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","defaultValue":"false","jsonName":"messageSetWireFormat"},{"name":"no_standard_descriptor_accessor","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","defaultValue":"false","jsonName":"noStandardDescriptorAccessor"},{"name":"deprecated","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","defaultValue":"false","jsonName":"deprecated"},{"name":"map_entry","number":7,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"mapEntry"},{"name":"uninterpreted_option","number":999,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".google.protobuf.UninterpretedOption","jsonName":"uninterpretedOption"}],"extensionRange":[{"start":1000,"end":536870912}],"reservedRange":[{"start":4,"end":5},{"start":5,"end":6},{"start":6,"end":7},{"start":8,"end":9},{"start":9,"end":10}]},{"name":"FieldOptions","field":[{"name":"ctype","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".google.protobuf.FieldOptions.CType","defaultValue":"STRING","jsonName":"ctype"},{"name":"packed","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"packed"},{"name":"jstype","number":6,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".google.protobuf.FieldOptions.JSType","defaultValue":"JS_NORMAL","jsonName":"jstype"},{"name":"lazy","number":5,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","defaultValue":"false","jsonName":"lazy"},{"name":"unverified_lazy","number":15,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","defaultValue":"false","jsonName":"unverifiedLazy"},{"name":"deprecated","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","defaultValue":"false","jsonName":"deprecated"},{"name":"weak","number":10,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","defaultValue":"false","jsonName":"weak"},{"name":"uninterpreted_option","number":999,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".google.protobuf.UninterpretedOption","jsonName":"uninterpretedOption"}],"enumType":[{"name":"CType","value":[{"name":"STRING","number":0},{"name":"CORD","number":1},{"name":"STRING_PIECE","number":2}]},{"name":"JSType","value":[{"name":"JS_NORMAL","number":0},{"name":"JS_STRING","number":1},{"name":"JS_NUMBER","number":2}]}],"extensionRange":[{"start":1000,"end":536870912}],"reservedRange":[{"start":4,"end":5}]},{"name":"OneofOptions","field":[{"name":"uninterpreted_option","number":999,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".google.protobuf.UninterpretedOption","jsonName":"uninterpretedOption"}],"extensionRange":[{"start":1000,"end":536870912}]},{"name":"EnumOptions","field":[{"name":"allow_alias","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"allowAlias"},{"name":"deprecated","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","defaultValue":"false","jsonName":"deprecated"},{"name":"uninterpreted_option","number":999,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".google.protobuf.UninterpretedOption","jsonName":"uninterpretedOption"}],"extensionRange":[{"start":1000,"end":536870912}],"reservedRange":[{"start":5,"end":6}]},{"name":"EnumValueOptions","field":[{"name":"deprecated","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","defaultValue":"false","jsonName":"deprecated"},{"name":"uninterpreted_option","number":999,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".google.protobuf.UninterpretedOption","jsonName":"uninterpretedOption"}],"extensionRange":[{"start":1000,"end":536870912}]},{"name":"ServiceOptions","field":[{"name":"deprecated","number":33,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","defaultValue":"false","jsonName":"deprecated"},{"name":"uninterpreted_option","number":999,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".google.protobuf.UninterpretedOption","jsonName":"uninterpretedOption"}],"extensionRange":[{"start":1000,"end":536870912}]},{"name":"MethodOptions","field":[{"name":"deprecated","number":33,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","defaultValue":"false","jsonName":"deprecated"},{"name":"idempotency_level","number":34,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".google.protobuf.MethodOptions.IdempotencyLevel","defaultValue":"IDEMPOTENCY_UNKNOWN","jsonName":"idempotencyLevel"},{"name":"uninterpreted_option","number":999,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".google.protobuf.UninterpretedOption","jsonName":"uninterpretedOption"}],"enumType":[{"name":"IdempotencyLevel","value":[{"name":"IDEMPOTENCY_UNKNOWN","number":0},{"name":"NO_SIDE_EFFECTS","number":1},{"name":"IDEMPOTENT","number":2}]}],"extensionRange":[{"start":1000,"end":536870912}]},{"name":"UninterpretedOption","field":[{"name":"name","number":2,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".google.protobuf.UninterpretedOption.NamePart","jsonName":"name"},{"name":"identifier_value","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"identifierValue"},{"name":"positive_int_value","number":4,"label":"LABEL_OPTIONAL","type":"TYPE_UINT64","jsonName":"positiveIntValue"},{"name":"negative_int_value","number":5,"label":"LABEL_OPTIONAL","type":"TYPE_INT64","jsonName":"negativeIntValue"},{"name":"double_value","number":6,"label":"LABEL_OPTIONAL","type":"TYPE_DOUBLE","jsonName":"doubleValue"},{"name":"string_value","number":7,"label":"LABEL_OPTIONAL","type":"TYPE_BYTES","jsonName":"stringValue"},{"name":"aggregate_value","number":8,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"aggregateValue"}],"nestedType":[{"name":"NamePart","field":[{"name":"name_part","number":1,"label":"LABEL_REQUIRED","type":"TYPE_STRING","jsonName":"namePart"},{"name":"is_extension","number":2,"label":"LABEL_REQUIRED","type":"TYPE_BOOL","jsonName":"isExtension"}]}]},{"name":"SourceCodeInfo","field":[{"name":"location","number":1,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".google.protobuf.SourceCodeInfo.Location","jsonName":"location"}],"nestedType":[{"name":"Location","field":[{"name":"path","number":1,"label":"LABEL_REPEATED","type":"TYPE_INT32","jsonName":"path","options":{"packed":true}},{"name":"span","number":2,"label":"LABEL_REPEATED","type":"TYPE_INT32","jsonName":"span","options":{"packed":true}},{"name":"leading_comments","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"leadingComments"},{"name":"trailing_comments","number":4,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"trailingComments"},{"name":"leading_detached_comments","number":6,"label":"LABEL_REPEATED","type":"TYPE_STRING","jsonName":"leadingDetachedComments"}]}]},{"name":"GeneratedCodeInfo","field":[{"name":"annotation","number":1,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".google.protobuf.GeneratedCodeInfo.Annotation","jsonName":"annotation"}],"nestedType":[{"name":"Annotation","field":[{"name":"path","number":1,"label":"LABEL_REPEATED","type":"TYPE_INT32","jsonName":"path","options":{"packed":true}},{"name":"source_file","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"sourceFile"},{"name":"begin","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_INT32","jsonName":"begin"},{"name":"end","number":4,"label":"LABEL_OPTIONAL","type":"TYPE_INT32","jsonName":"end"}]}]}],"options":{"javaPackage":"com.google.protobuf","javaOuterClassname":"DescriptorProtos","optimizeFor":"SPEED","goPackage":"google.golang.org/protobuf/types/descriptorpb","ccEnableArenas":true,"objcClassPrefix":"GPB","csharpNamespace":"Google.Protobuf.Reflection"},"sourceCodeInfo":{"location":[{"span":[39,0,920,1]},{"path":[12],"span":[39,0,18],"leadingDetachedComments":[" Protocol Buffers - Google's data interchange format\n Copyright 2008 Google Inc. All rights reserved.\n https://developers.google.com/protocol-buffers/\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are\n met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\n copyright notice, this list of conditions and the following disclaimer\n in the documentation and/or other materials provided with the\n distribution.\n * Neither the name of Google Inc. nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"," Author: kenton@google.com (Kenton Varda)\n Based on original Protocol Buffers design by\n Sanjay Ghemawat, Jeff Dean, and others.\n\n The messages in this file describe the definitions found in .proto files.\n A valid .proto file can be translated directly to a FileDescriptorProto\n without any other information (e.g. without reading its imports).\n"]},{"path":[2],"span":[41,0,24]},{"path":[8],"span":[43,0,68]},{"path":[8,11],"span":[43,0,68]},{"path":[8],"span":[44,0,44]},{"path":[8,1],"span":[44,0,44]},{"path":[8],"span":[45,0,49]},{"path":[8,8],"span":[45,0,49]},{"path":[8],"span":[46,0,55]},{"path":[8,37],"span":[46,0,55]},{"path":[8],"span":[47,0,33]},{"path":[8,36],"span":[47,0,33]},{"path":[8],"span":[48,0,31]},{"path":[8,31],"span":[48,0,31]},{"path":[8],"span":[52,0,28]},{"path":[8,9],"span":[52,0,28],"leadingComments":" descriptor.proto must be optimized for speed because reflection-based\n algorithms don't work during bootstrapping.\n"},{"path":[4,0],"span":[56,0,58,1],"leadingComments":" The protocol compiler can output a FileDescriptorSet containing the .proto\n files it parses.\n"},{"path":[4,0,1],"span":[56,8,25]},{"path":[4,0,2,0],"span":[57,2,40]},{"path":[4,0,2,0,4],"span":[57,2,10]},{"path":[4,0,2,0,6],"span":[57,11,30]},{"path":[4,0,2,0,1],"span":[57,31,35]},{"path":[4,0,2,0,3],"span":[57,38,39]},{"path":[4,1],"span":[61,0,90,1],"leadingComments":" Describes a complete .proto file.\n"},{"path":[4,1,1],"span":[61,8,27]},{"path":[4,1,2,0],"span":[62,2,27],"trailingComments":" file name, relative to root of source tree\n"},{"path":[4,1,2,0,4],"span":[62,2,10]},{"path":[4,1,2,0,5],"span":[62,11,17]},{"path":[4,1,2,0,1],"span":[62,18,22]},{"path":[4,1,2,0,3],"span":[62,25,26]},{"path":[4,1,2,1],"span":[63,2,30],"trailingComments":" e.g. \"foo\", \"foo.bar\", etc.\n"},{"path":[4,1,2,1,4],"span":[63,2,10]},{"path":[4,1,2,1,5],"span":[63,11,17]},{"path":[4,1,2,1,1],"span":[63,18,25]},{"path":[4,1,2,1,3],"span":[63,28,29]},{"path":[4,1,2,2],"span":[66,2,33],"leadingComments":" Names of files imported by this file.\n"},{"path":[4,1,2,2,4],"span":[66,2,10]},{"path":[4,1,2,2,5],"span":[66,11,17]},{"path":[4,1,2,2,1],"span":[66,18,28]},{"path":[4,1,2,2,3],"span":[66,31,32]},{"path":[4,1,2,3],"span":[68,2,40],"leadingComments":" Indexes of the public imported files in the dependency list above.\n"},{"path":[4,1,2,3,4],"span":[68,2,10]},{"path":[4,1,2,3,5],"span":[68,11,16]},{"path":[4,1,2,3,1],"span":[68,17,34]},{"path":[4,1,2,3,3],"span":[68,37,39]},{"path":[4,1,2,4],"span":[71,2,38],"leadingComments":" Indexes of the weak imported files in the dependency list.\n For Google-internal migration only. Do not use.\n"},{"path":[4,1,2,4,4],"span":[71,2,10]},{"path":[4,1,2,4,5],"span":[71,11,16]},{"path":[4,1,2,4,1],"span":[71,17,32]},{"path":[4,1,2,4,3],"span":[71,35,37]},{"path":[4,1,2,5],"span":[74,2,44],"leadingComments":" All top-level definitions in this file.\n"},{"path":[4,1,2,5,4],"span":[74,2,10]},{"path":[4,1,2,5,6],"span":[74,11,26]},{"path":[4,1,2,5,1],"span":[74,27,39]},{"path":[4,1,2,5,3],"span":[74,42,43]},{"path":[4,1,2,6],"span":[75,2,45]},{"path":[4,1,2,6,4],"span":[75,2,10]},{"path":[4,1,2,6,6],"span":[75,11,30]},{"path":[4,1,2,6,1],"span":[75,31,40]},{"path":[4,1,2,6,3],"span":[75,43,44]},{"path":[4,1,2,7],"span":[76,2,46]},{"path":[4,1,2,7,4],"span":[76,2,10]},{"path":[4,1,2,7,6],"span":[76,11,33]},{"path":[4,1,2,7,1],"span":[76,34,41]},{"path":[4,1,2,7,3],"span":[76,44,45]},{"path":[4,1,2,8],"span":[77,2,46]},{"path":[4,1,2,8,4],"span":[77,2,10]},{"path":[4,1,2,8,6],"span":[77,11,31]},{"path":[4,1,2,8,1],"span":[77,32,41]},{"path":[4,1,2,8,3],"span":[77,44,45]},{"path":[4,1,2,9],"span":[79,2,35]},{"path":[4,1,2,9,4],"span":[79,2,10]},{"path":[4,1,2,9,6],"span":[79,11,22]},{"path":[4,1,2,9,1],"span":[79,23,30]},{"path":[4,1,2,9,3],"span":[79,33,34]},{"path":[4,1,2,10],"span":[85,2,47],"leadingComments":" This field contains optional information about the original source code.\n You may safely remove this entire field without harming runtime\n functionality of the descriptors -- the information is needed only by\n development tools.\n"},{"path":[4,1,2,10,4],"span":[85,2,10]},{"path":[4,1,2,10,6],"span":[85,11,25]},{"path":[4,1,2,10,1],"span":[85,26,42]},{"path":[4,1,2,10,3],"span":[85,45,46]},{"path":[4,1,2,11],"span":[89,2,30],"leadingComments":" The syntax of the proto file.\n The supported values are \"proto2\" and \"proto3\".\n"},{"path":[4,1,2,11,4],"span":[89,2,10]},{"path":[4,1,2,11,5],"span":[89,11,17]},{"path":[4,1,2,11,1],"span":[89,18,24]},{"path":[4,1,2,11,3],"span":[89,27,29]},{"path":[4,2],"span":[93,0,125,1],"leadingComments":" Describes a message type.\n"},{"path":[4,2,1],"span":[93,8,23]},{"path":[4,2,2,0],"span":[94,2,27]},{"path":[4,2,2,0,4],"span":[94,2,10]},{"path":[4,2,2,0,5],"span":[94,11,17]},{"path":[4,2,2,0,1],"span":[94,18,22]},{"path":[4,2,2,0,3],"span":[94,25,26]},{"path":[4,2,2,1],"span":[96,2,42]},{"path":[4,2,2,1,4],"span":[96,2,10]},{"path":[4,2,2,1,6],"span":[96,11,31]},{"path":[4,2,2,1,1],"span":[96,32,37]},{"path":[4,2,2,1,3],"span":[96,40,41]},{"path":[4,2,2,2],"span":[97,2,46]},{"path":[4,2,2,2,4],"span":[97,2,10]},{"path":[4,2,2,2,6],"span":[97,11,31]},{"path":[4,2,2,2,1],"span":[97,32,41]},{"path":[4,2,2,2,3],"span":[97,44,45]},{"path":[4,2,2,3],"span":[99,2,43]},{"path":[4,2,2,3,4],"span":[99,2,10]},{"path":[4,2,2,3,6],"span":[99,11,26]},{"path":[4,2,2,3,1],"span":[99,27,38]},{"path":[4,2,2,3,3],"span":[99,41,42]},{"path":[4,2,2,4],"span":[100,2,45]},{"path":[4,2,2,4,4],"span":[100,2,10]},{"path":[4,2,2,4,6],"span":[100,11,30]},{"path":[4,2,2,4,1],"span":[100,31,40]},{"path":[4,2,2,4,3],"span":[100,43,44]},{"path":[4,2,3,0],"span":[102,2,107,3]},{"path":[4,2,3,0,1],"span":[102,10,24]},{"path":[4,2,3,0,2,0],"span":[103,4,29],"trailingComments":" Inclusive.\n"},{"path":[4,2,3,0,2,0,4],"span":[103,4,12]},{"path":[4,2,3,0,2,0,5],"span":[103,13,18]},{"path":[4,2,3,0,2,0,1],"span":[103,19,24]},{"path":[4,2,3,0,2,0,3],"span":[103,27,28]},{"path":[4,2,3,0,2,1],"span":[104,4,27],"trailingComments":" Exclusive.\n"},{"path":[4,2,3,0,2,1,4],"span":[104,4,12]},{"path":[4,2,3,0,2,1,5],"span":[104,13,18]},{"path":[4,2,3,0,2,1,1],"span":[104,19,22]},{"path":[4,2,3,0,2,1,3],"span":[104,25,26]},{"path":[4,2,3,0,2,2],"span":[106,4,47]},{"path":[4,2,3,0,2,2,4],"span":[106,4,12]},{"path":[4,2,3,0,2,2,6],"span":[106,13,34]},{"path":[4,2,3,0,2,2,1],"span":[106,35,42]},{"path":[4,2,3,0,2,2,3],"span":[106,45,46]},{"path":[4,2,2,5],"span":[108,2,46]},{"path":[4,2,2,5,4],"span":[108,2,10]},{"path":[4,2,2,5,6],"span":[108,11,25]},{"path":[4,2,2,5,1],"span":[108,26,41]},{"path":[4,2,2,5,3],"span":[108,44,45]},{"path":[4,2,2,6],"span":[110,2,47]},{"path":[4,2,2,6,4],"span":[110,2,10]},{"path":[4,2,2,6,6],"span":[110,11,31]},{"path":[4,2,2,6,1],"span":[110,32,42]},{"path":[4,2,2,6,3],"span":[110,45,46]},{"path":[4,2,2,7],"span":[112,2,38]},{"path":[4,2,2,7,4],"span":[112,2,10]},{"path":[4,2,2,7,6],"span":[112,11,25]},{"path":[4,2,2,7,1],"span":[112,26,33]},{"path":[4,2,2,7,3],"span":[112,36,37]},{"path":[4,2,3,1],"span":[117,2,120,3],"leadingComments":" Range of reserved tag numbers. Reserved tag numbers may not be used by\n fields or extension ranges in the same message. Reserved ranges may\n not overlap.\n"},{"path":[4,2,3,1,1],"span":[117,10,23]},{"path":[4,2,3,1,2,0],"span":[118,4,29],"trailingComments":" Inclusive.\n"},{"path":[4,2,3,1,2,0,4],"span":[118,4,12]},{"path":[4,2,3,1,2,0,5],"span":[118,13,18]},{"path":[4,2,3,1,2,0,1],"span":[118,19,24]},{"path":[4,2,3,1,2,0,3],"span":[118,27,28]},{"path":[4,2,3,1,2,1],"span":[119,4,27],"trailingComments":" Exclusive.\n"},{"path":[4,2,3,1,2,1,4],"span":[119,4,12]},{"path":[4,2,3,1,2,1,5],"span":[119,13,18]},{"path":[4,2,3,1,2,1,1],"span":[119,19,22]},{"path":[4,2,3,1,2,1,3],"span":[119,25,26]},{"path":[4,2,2,8],"span":[121,2,44]},{"path":[4,2,2,8,4],"span":[121,2,10]},{"path":[4,2,2,8,6],"span":[121,11,24]},{"path":[4,2,2,8,1],"span":[121,25,39]},{"path":[4,2,2,8,3],"span":[121,42,43]},{"path":[4,2,2,9],"span":[124,2,37],"leadingComments":" Reserved field names, which may not be used by fields in the same message.\n A given name may only be reserved once.\n"},{"path":[4,2,2,9,4],"span":[124,2,10]},{"path":[4,2,2,9,5],"span":[124,11,17]},{"path":[4,2,2,9,1],"span":[124,18,31]},{"path":[4,2,2,9,3],"span":[124,34,36]},{"path":[4,3],"span":[127,0,134,1]},{"path":[4,3,1],"span":[127,8,29]},{"path":[4,3,2,0],"span":[129,2,58],"leadingComments":" The parser stores options it doesn't recognize here. See above.\n"},{"path":[4,3,2,0,4],"span":[129,2,10]},{"path":[4,3,2,0,6],"span":[129,11,30]},{"path":[4,3,2,0,1],"span":[129,31,51]},{"path":[4,3,2,0,3],"span":[129,54,57]},{"path":[4,3,5],"span":[133,2,25],"leadingComments":" Clients can define custom options in extensions of this message. See above.\n"},{"path":[4,3,5,0],"span":[133,13,24]},{"path":[4,3,5,0,1],"span":[133,13,17]},{"path":[4,3,5,0,2],"span":[133,21,24]},{"path":[4,4],"span":[137,0,237,1],"leadingComments":" Describes a field within a message.\n"},{"path":[4,4,1],"span":[137,8,28]},{"path":[4,4,4,0],"span":[138,2,169,3]},{"path":[4,4,4,0,1],"span":[138,7,11]},{"path":[4,4,4,0,2,0],"span":[141,4,20],"leadingComments":" 0 is reserved for errors.\n Order is weird for historical reasons.\n"},{"path":[4,4,4,0,2,0,1],"span":[141,4,15]},{"path":[4,4,4,0,2,0,2],"span":[141,18,19]},{"path":[4,4,4,0,2,1],"span":[142,4,19]},{"path":[4,4,4,0,2,1,1],"span":[142,4,14]},{"path":[4,4,4,0,2,1,2],"span":[142,17,18]},{"path":[4,4,4,0,2,2],"span":[145,4,19],"leadingComments":" Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if\n negative values are likely.\n"},{"path":[4,4,4,0,2,2,1],"span":[145,4,14]},{"path":[4,4,4,0,2,2,2],"span":[145,17,18]},{"path":[4,4,4,0,2,3],"span":[146,4,20]},{"path":[4,4,4,0,2,3,1],"span":[146,4,15]},{"path":[4,4,4,0,2,3,2],"span":[146,18,19]},{"path":[4,4,4,0,2,4],"span":[149,4,19],"leadingComments":" Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if\n negative values are likely.\n"},{"path":[4,4,4,0,2,4,1],"span":[149,4,14]},{"path":[4,4,4,0,2,4,2],"span":[149,17,18]},{"path":[4,4,4,0,2,5],"span":[150,4,21]},{"path":[4,4,4,0,2,5,1],"span":[150,4,16]},{"path":[4,4,4,0,2,5,2],"span":[150,19,20]},{"path":[4,4,4,0,2,6],"span":[151,4,21]},{"path":[4,4,4,0,2,6,1],"span":[151,4,16]},{"path":[4,4,4,0,2,6,2],"span":[151,19,20]},{"path":[4,4,4,0,2,7],"span":[152,4,18]},{"path":[4,4,4,0,2,7,1],"span":[152,4,13]},{"path":[4,4,4,0,2,7,2],"span":[152,16,17]},{"path":[4,4,4,0,2,8],"span":[153,4,20]},{"path":[4,4,4,0,2,8,1],"span":[153,4,15]},{"path":[4,4,4,0,2,8,2],"span":[153,18,19]},{"path":[4,4,4,0,2,9],"span":[158,4,20],"leadingComments":" Tag-delimited aggregate.\n Group type is deprecated and not supported in proto3. However, Proto3\n implementations should still be able to parse the group wire format and\n treat group fields as unknown fields.\n"},{"path":[4,4,4,0,2,9,1],"span":[158,4,14]},{"path":[4,4,4,0,2,9,2],"span":[158,17,19]},{"path":[4,4,4,0,2,10],"span":[159,4,22],"trailingComments":" Length-delimited aggregate.\n"},{"path":[4,4,4,0,2,10,1],"span":[159,4,16]},{"path":[4,4,4,0,2,10,2],"span":[159,19,21]},{"path":[4,4,4,0,2,11],"span":[162,4,20],"leadingComments":" New in version 2.\n"},{"path":[4,4,4,0,2,11,1],"span":[162,4,14]},{"path":[4,4,4,0,2,11,2],"span":[162,17,19]},{"path":[4,4,4,0,2,12],"span":[163,4,21]},{"path":[4,4,4,0,2,12,1],"span":[163,4,15]},{"path":[4,4,4,0,2,12,2],"span":[163,18,20]},{"path":[4,4,4,0,2,13],"span":[164,4,19]},{"path":[4,4,4,0,2,13,1],"span":[164,4,13]},{"path":[4,4,4,0,2,13,2],"span":[164,16,18]},{"path":[4,4,4,0,2,14],"span":[165,4,23]},{"path":[4,4,4,0,2,14,1],"span":[165,4,17]},{"path":[4,4,4,0,2,14,2],"span":[165,20,22]},{"path":[4,4,4,0,2,15],"span":[166,4,23]},{"path":[4,4,4,0,2,15,1],"span":[166,4,17]},{"path":[4,4,4,0,2,15,2],"span":[166,20,22]},{"path":[4,4,4,0,2,16],"span":[167,4,21],"trailingComments":" Uses ZigZag encoding.\n"},{"path":[4,4,4,0,2,16,1],"span":[167,4,15]},{"path":[4,4,4,0,2,16,2],"span":[167,18,20]},{"path":[4,4,4,0,2,17],"span":[168,4,21],"trailingComments":" Uses ZigZag encoding.\n"},{"path":[4,4,4,0,2,17,1],"span":[168,4,15]},{"path":[4,4,4,0,2,17,2],"span":[168,18,20]},{"path":[4,4,4,1],"span":[171,2,176,3]},{"path":[4,4,4,1,1],"span":[171,7,12]},{"path":[4,4,4,1,2,0],"span":[173,4,23],"leadingComments":" 0 is reserved for errors\n"},{"path":[4,4,4,1,2,0,1],"span":[173,4,18]},{"path":[4,4,4,1,2,0,2],"span":[173,21,22]},{"path":[4,4,4,1,2,1],"span":[174,4,23]},{"path":[4,4,4,1,2,1,1],"span":[174,4,18]},{"path":[4,4,4,1,2,1,2],"span":[174,21,22]},{"path":[4,4,4,1,2,2],"span":[175,4,23]},{"path":[4,4,4,1,2,2,1],"span":[175,4,18]},{"path":[4,4,4,1,2,2,2],"span":[175,21,22]},{"path":[4,4,2,0],"span":[178,2,27]},{"path":[4,4,2,0,4],"span":[178,2,10]},{"path":[4,4,2,0,5],"span":[178,11,17]},{"path":[4,4,2,0,1],"span":[178,18,22]},{"path":[4,4,2,0,3],"span":[178,25,26]},{"path":[4,4,2,1],"span":[179,2,28]},{"path":[4,4,2,1,4],"span":[179,2,10]},{"path":[4,4,2,1,5],"span":[179,11,16]},{"path":[4,4,2,1,1],"span":[179,17,23]},{"path":[4,4,2,1,3],"span":[179,26,27]},{"path":[4,4,2,2],"span":[180,2,27]},{"path":[4,4,2,2,4],"span":[180,2,10]},{"path":[4,4,2,2,6],"span":[180,11,16]},{"path":[4,4,2,2,1],"span":[180,17,22]},{"path":[4,4,2,2,3],"span":[180,25,26]},{"path":[4,4,2,3],"span":[184,2,25],"leadingComments":" If type_name is set, this need not be set. If both this and type_name\n are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.\n"},{"path":[4,4,2,3,4],"span":[184,2,10]},{"path":[4,4,2,3,6],"span":[184,11,15]},{"path":[4,4,2,3,1],"span":[184,16,20]},{"path":[4,4,2,3,3],"span":[184,23,24]},{"path":[4,4,2,4],"span":[191,2,32],"leadingComments":" For message and enum types, this is the name of the type. If the name\n starts with a '.', it is fully-qualified. Otherwise, C++-like scoping\n rules are used to find the type (i.e. first the nested types within this\n message are searched, then within the parent, on up to the root\n namespace).\n"},{"path":[4,4,2,4,4],"span":[191,2,10]},{"path":[4,4,2,4,5],"span":[191,11,17]},{"path":[4,4,2,4,1],"span":[191,18,27]},{"path":[4,4,2,4,3],"span":[191,30,31]},{"path":[4,4,2,5],"span":[195,2,31],"leadingComments":" For extensions, this is the name of the type being extended. It is\n resolved in the same manner as type_name.\n"},{"path":[4,4,2,5,4],"span":[195,2,10]},{"path":[4,4,2,5,5],"span":[195,11,17]},{"path":[4,4,2,5,1],"span":[195,18,26]},{"path":[4,4,2,5,3],"span":[195,29,30]},{"path":[4,4,2,6],"span":[201,2,36],"leadingComments":" For numeric types, contains the original text representation of the value.\n For booleans, \"true\" or \"false\".\n For strings, contains the default text contents (not escaped in any way).\n For bytes, contains the C escaped value. All bytes >= 128 are escaped.\n"},{"path":[4,4,2,6,4],"span":[201,2,10]},{"path":[4,4,2,6,5],"span":[201,11,17]},{"path":[4,4,2,6,1],"span":[201,18,31]},{"path":[4,4,2,6,3],"span":[201,34,35]},{"path":[4,4,2,7],"span":[205,2,33],"leadingComments":" If set, gives the index of a oneof in the containing type's oneof_decl\n list. This field is a member of that oneof.\n"},{"path":[4,4,2,7,4],"span":[205,2,10]},{"path":[4,4,2,7,5],"span":[205,11,16]},{"path":[4,4,2,7,1],"span":[205,17,28]},{"path":[4,4,2,7,3],"span":[205,31,32]},{"path":[4,4,2,8],"span":[211,2,33],"leadingComments":" JSON name of this field. The value is set by protocol compiler. If the\n user has set a \"json_name\" option on this field, that option's value\n will be used. Otherwise, it's deduced from the field's name by converting\n it to camelCase.\n"},{"path":[4,4,2,8,4],"span":[211,2,10]},{"path":[4,4,2,8,5],"span":[211,11,17]},{"path":[4,4,2,8,1],"span":[211,18,27]},{"path":[4,4,2,8,3],"span":[211,30,32]},{"path":[4,4,2,9],"span":[213,2,36]},{"path":[4,4,2,9,4],"span":[213,2,10]},{"path":[4,4,2,9,6],"span":[213,11,23]},{"path":[4,4,2,9,1],"span":[213,24,31]},{"path":[4,4,2,9,3],"span":[213,34,35]},{"path":[4,4,2,10],"span":[236,2,37],"leadingComments":" If true, this is a proto3 \"optional\". When a proto3 field is optional, it\n tracks presence regardless of field type.\n\n When proto3_optional is true, this field must be belong to a oneof to\n signal to old proto3 clients that presence is tracked for this field. This\n oneof is known as a \"synthetic\" oneof, and this field must be its sole\n member (each proto3 optional field gets its own synthetic oneof). Synthetic\n oneofs exist in the descriptor only, and do not generate any API. Synthetic\n oneofs must be ordered after all \"real\" oneofs.\n\n For message fields, proto3_optional doesn't create any semantic change,\n since non-repeated message fields always track presence. However it still\n indicates the semantic detail of whether the user wrote \"optional\" or not.\n This can be useful for round-tripping the .proto file. For consistency we\n give message fields a synthetic oneof also, even though it is not required\n to track presence. This is especially important because the parser can't\n tell if a field is a message or an enum, so it must always create a\n synthetic oneof.\n\n Proto2 optional fields do not set this flag, because they already indicate\n optional with `LABEL_OPTIONAL`.\n"},{"path":[4,4,2,10,4],"span":[236,2,10]},{"path":[4,4,2,10,5],"span":[236,11,15]},{"path":[4,4,2,10,1],"span":[236,16,31]},{"path":[4,4,2,10,3],"span":[236,34,36]},{"path":[4,5],"span":[240,0,243,1],"leadingComments":" Describes a oneof.\n"},{"path":[4,5,1],"span":[240,8,28]},{"path":[4,5,2,0],"span":[241,2,27]},{"path":[4,5,2,0,4],"span":[241,2,10]},{"path":[4,5,2,0,5],"span":[241,11,17]},{"path":[4,5,2,0,1],"span":[241,18,22]},{"path":[4,5,2,0,3],"span":[241,25,26]},{"path":[4,5,2,1],"span":[242,2,36]},{"path":[4,5,2,1,4],"span":[242,2,10]},{"path":[4,5,2,1,6],"span":[242,11,23]},{"path":[4,5,2,1,1],"span":[242,24,31]},{"path":[4,5,2,1,3],"span":[242,34,35]},{"path":[4,6],"span":[246,0,272,1],"leadingComments":" Describes an enum type.\n"},{"path":[4,6,1],"span":[246,8,27]},{"path":[4,6,2,0],"span":[247,2,27]},{"path":[4,6,2,0,4],"span":[247,2,10]},{"path":[4,6,2,0,5],"span":[247,11,17]},{"path":[4,6,2,0,1],"span":[247,18,22]},{"path":[4,6,2,0,3],"span":[247,25,26]},{"path":[4,6,2,1],"span":[249,2,46]},{"path":[4,6,2,1,4],"span":[249,2,10]},{"path":[4,6,2,1,6],"span":[249,11,35]},{"path":[4,6,2,1,1],"span":[249,36,41]},{"path":[4,6,2,1,3],"span":[249,44,45]},{"path":[4,6,2,2],"span":[251,2,35]},{"path":[4,6,2,2,4],"span":[251,2,10]},{"path":[4,6,2,2,6],"span":[251,11,22]},{"path":[4,6,2,2,1],"span":[251,23,30]},{"path":[4,6,2,2,3],"span":[251,33,34]},{"path":[4,6,3,0],"span":[259,2,262,3],"leadingComments":" Range of reserved numeric values. Reserved values may not be used by\n entries in the same enum. Reserved ranges may not overlap.\n\n Note that this is distinct from DescriptorProto.ReservedRange in that it\n is inclusive such that it can appropriately represent the entire int32\n domain.\n"},{"path":[4,6,3,0,1],"span":[259,10,27]},{"path":[4,6,3,0,2,0],"span":[260,4,29],"trailingComments":" Inclusive.\n"},{"path":[4,6,3,0,2,0,4],"span":[260,4,12]},{"path":[4,6,3,0,2,0,5],"span":[260,13,18]},{"path":[4,6,3,0,2,0,1],"span":[260,19,24]},{"path":[4,6,3,0,2,0,3],"span":[260,27,28]},{"path":[4,6,3,0,2,1],"span":[261,4,27],"trailingComments":" Inclusive.\n"},{"path":[4,6,3,0,2,1,4],"span":[261,4,12]},{"path":[4,6,3,0,2,1,5],"span":[261,13,18]},{"path":[4,6,3,0,2,1,1],"span":[261,19,22]},{"path":[4,6,3,0,2,1,3],"span":[261,25,26]},{"path":[4,6,2,3],"span":[267,2,48],"leadingComments":" Range of reserved numeric values. Reserved numeric values may not be used\n by enum values in the same enum declaration. Reserved ranges may not\n overlap.\n"},{"path":[4,6,2,3,4],"span":[267,2,10]},{"path":[4,6,2,3,6],"span":[267,11,28]},{"path":[4,6,2,3,1],"span":[267,29,43]},{"path":[4,6,2,3,3],"span":[267,46,47]},{"path":[4,6,2,4],"span":[271,2,36],"leadingComments":" Reserved enum value names, which may not be reused. A given name may only\n be reserved once.\n"},{"path":[4,6,2,4,4],"span":[271,2,10]},{"path":[4,6,2,4,5],"span":[271,11,17]},{"path":[4,6,2,4,1],"span":[271,18,31]},{"path":[4,6,2,4,3],"span":[271,34,35]},{"path":[4,7],"span":[275,0,280,1],"leadingComments":" Describes a value within an enum.\n"},{"path":[4,7,1],"span":[275,8,32]},{"path":[4,7,2,0],"span":[276,2,27]},{"path":[4,7,2,0,4],"span":[276,2,10]},{"path":[4,7,2,0,5],"span":[276,11,17]},{"path":[4,7,2,0,1],"span":[276,18,22]},{"path":[4,7,2,0,3],"span":[276,25,26]},{"path":[4,7,2,1],"span":[277,2,28]},{"path":[4,7,2,1,4],"span":[277,2,10]},{"path":[4,7,2,1,5],"span":[277,11,16]},{"path":[4,7,2,1,1],"span":[277,17,23]},{"path":[4,7,2,1,3],"span":[277,26,27]},{"path":[4,7,2,2],"span":[279,2,40]},{"path":[4,7,2,2,4],"span":[279,2,10]},{"path":[4,7,2,2,6],"span":[279,11,27]},{"path":[4,7,2,2,1],"span":[279,28,35]},{"path":[4,7,2,2,3],"span":[279,38,39]},{"path":[4,8],"span":[283,0,288,1],"leadingComments":" Describes a service.\n"},{"path":[4,8,1],"span":[283,8,30]},{"path":[4,8,2,0],"span":[284,2,27]},{"path":[4,8,2,0,4],"span":[284,2,10]},{"path":[4,8,2,0,5],"span":[284,11,17]},{"path":[4,8,2,0,1],"span":[284,18,22]},{"path":[4,8,2,0,3],"span":[284,25,26]},{"path":[4,8,2,1],"span":[285,2,44]},{"path":[4,8,2,1,4],"span":[285,2,10]},{"path":[4,8,2,1,6],"span":[285,11,32]},{"path":[4,8,2,1,1],"span":[285,33,39]},{"path":[4,8,2,1,3],"span":[285,42,43]},{"path":[4,8,2,2],"span":[287,2,38]},{"path":[4,8,2,2,4],"span":[287,2,10]},{"path":[4,8,2,2,6],"span":[287,11,25]},{"path":[4,8,2,2,1],"span":[287,26,33]},{"path":[4,8,2,2,3],"span":[287,36,37]},{"path":[4,9],"span":[291,0,305,1],"leadingComments":" Describes a method of a service.\n"},{"path":[4,9,1],"span":[291,8,29]},{"path":[4,9,2,0],"span":[292,2,27]},{"path":[4,9,2,0,4],"span":[292,2,10]},{"path":[4,9,2,0,5],"span":[292,11,17]},{"path":[4,9,2,0,1],"span":[292,18,22]},{"path":[4,9,2,0,3],"span":[292,25,26]},{"path":[4,9,2,1],"span":[296,2,33],"leadingComments":" Input and output type names. These are resolved in the same way as\n FieldDescriptorProto.type_name, but must refer to a message type.\n"},{"path":[4,9,2,1,4],"span":[296,2,10]},{"path":[4,9,2,1,5],"span":[296,11,17]},{"path":[4,9,2,1,1],"span":[296,18,28]},{"path":[4,9,2,1,3],"span":[296,31,32]},{"path":[4,9,2,2],"span":[297,2,34]},{"path":[4,9,2,2,4],"span":[297,2,10]},{"path":[4,9,2,2,5],"span":[297,11,17]},{"path":[4,9,2,2,1],"span":[297,18,29]},{"path":[4,9,2,2,3],"span":[297,32,33]},{"path":[4,9,2,3],"span":[299,2,37]},{"path":[4,9,2,3,4],"span":[299,2,10]},{"path":[4,9,2,3,6],"span":[299,11,24]},{"path":[4,9,2,3,1],"span":[299,25,32]},{"path":[4,9,2,3,3],"span":[299,35,36]},{"path":[4,9,2,4],"span":[302,2,55],"leadingComments":" Identifies if client streams multiple client messages\n"},{"path":[4,9,2,4,4],"span":[302,2,10]},{"path":[4,9,2,4,5],"span":[302,11,15]},{"path":[4,9,2,4,1],"span":[302,16,32]},{"path":[4,9,2,4,3],"span":[302,35,36]},{"path":[4,9,2,4,8],"span":[302,37,54]},{"path":[4,9,2,4,7],"span":[302,38,53]},{"path":[4,9,2,5],"span":[304,2,55],"leadingComments":" Identifies if server streams multiple server messages\n"},{"path":[4,9,2,5,4],"span":[304,2,10]},{"path":[4,9,2,5,5],"span":[304,11,15]},{"path":[4,9,2,5,1],"span":[304,16,32]},{"path":[4,9,2,5,3],"span":[304,35,36]},{"path":[4,9,2,5,8],"span":[304,37,54]},{"path":[4,9,2,5,7],"span":[304,38,53]},{"path":[4,10],"span":[340,0,463,1],"leadingDetachedComments":[" ===================================================================\n Options\n"," Each of the definitions above may have \"options\" attached. These are\n just annotations which may cause code to be generated slightly differently\n or may contain hints for code that manipulates protocol messages.\n\n Clients may define custom options as extensions of the *Options messages.\n These extensions may not yet be known at parsing time, so the parser cannot\n store the values in them. Instead it stores them in a field in the *Options\n message called uninterpreted_option. This field must have the same name\n across all *Options messages. We then use this field to populate the\n extensions when we build a descriptor, at which point all protos have been\n parsed and so all extensions are known.\n\n Extension numbers for custom options may be chosen as follows:\n * For options which will only be used within a single application or\n organization, or for experimental options, use field numbers 50000\n through 99999. It is up to you to ensure that you do not use the\n same number for multiple options.\n * For options which will be published and used publicly by multiple\n independent entities, e-mail protobuf-global-extension-registry@google.com\n to reserve extension numbers. Simply provide your project name (e.g.\n Objective-C plugin) and your project website (if available) -- there's no\n need to explain how you intend to use them. Usually you only need one\n extension number. You can declare multiple options with only one extension\n number by putting them in a sub-message. See the Custom Options section of\n the docs for examples:\n https://developers.google.com/protocol-buffers/docs/proto#options\n If this turns out to be popular, a web service will be set up\n to automatically assign option numbers.\n"]},{"path":[4,10,1],"span":[340,8,19]},{"path":[4,10,2,0],"span":[346,2,35],"leadingComments":" Sets the Java package where classes generated from this .proto will be\n placed. By default, the proto package is used, but this is often\n inappropriate because proto packages do not normally start with backwards\n domain names.\n"},{"path":[4,10,2,0,4],"span":[346,2,10]},{"path":[4,10,2,0,5],"span":[346,11,17]},{"path":[4,10,2,0,1],"span":[346,18,30]},{"path":[4,10,2,0,3],"span":[346,33,34]},{"path":[4,10,2,1],"span":[354,2,43],"leadingComments":" Controls the name of the wrapper Java class generated for the .proto file.\n That class will always contain the .proto file's getDescriptor() method as\n well as any top-level extensions defined in the .proto file.\n If java_multiple_files is disabled, then all the other classes from the\n .proto file will be nested inside the single wrapper outer class.\n"},{"path":[4,10,2,1,4],"span":[354,2,10]},{"path":[4,10,2,1,5],"span":[354,11,17]},{"path":[4,10,2,1,1],"span":[354,18,38]},{"path":[4,10,2,1,3],"span":[354,41,42]},{"path":[4,10,2,2],"span":[362,2,59],"leadingComments":" If enabled, then the Java code generator will generate a separate .java\n file for each top-level message, enum, and service defined in the .proto\n file. Thus, these types will *not* be nested inside the wrapper class\n named by java_outer_classname. However, the wrapper class will still be\n generated to contain the file's getDescriptor() method as well as any\n top-level extensions defined in the file.\n"},{"path":[4,10,2,2,4],"span":[362,2,10]},{"path":[4,10,2,2,5],"span":[362,11,15]},{"path":[4,10,2,2,1],"span":[362,16,35]},{"path":[4,10,2,2,3],"span":[362,38,40]},{"path":[4,10,2,2,8],"span":[362,41,58]},{"path":[4,10,2,2,7],"span":[362,42,57]},{"path":[4,10,2,3],"span":[365,2,69],"leadingComments":" This option does nothing.\n"},{"path":[4,10,2,3,4],"span":[365,2,10]},{"path":[4,10,2,3,5],"span":[365,11,15]},{"path":[4,10,2,3,1],"span":[365,16,45]},{"path":[4,10,2,3,3],"span":[365,48,50]},{"path":[4,10,2,3,8],"span":[365,51,68]},{"path":[4,10,2,3,8,3],"span":[365,52,67]},{"path":[4,10,2,4],"span":[373,2,62],"leadingComments":" If set true, then the Java2 code generator will generate code that\n throws an exception whenever an attempt is made to assign a non-UTF-8\n byte sequence to a string field.\n Message reflection will do the same.\n However, an extension field still accepts non-UTF-8 byte sequences.\n This option has no effect on when used with the lite runtime.\n"},{"path":[4,10,2,4,4],"span":[373,2,10]},{"path":[4,10,2,4,5],"span":[373,11,15]},{"path":[4,10,2,4,1],"span":[373,16,38]},{"path":[4,10,2,4,3],"span":[373,41,43]},{"path":[4,10,2,4,8],"span":[373,44,61]},{"path":[4,10,2,4,7],"span":[373,45,60]},{"path":[4,10,4,0],"span":[377,2,382,3],"leadingComments":" Generated classes can be optimized for speed or code size.\n"},{"path":[4,10,4,0,1],"span":[377,7,19]},{"path":[4,10,4,0,2,0],"span":[378,4,14],"trailingComments":" Generate complete code for parsing, serialization,\n"},{"path":[4,10,4,0,2,0,1],"span":[378,4,9]},{"path":[4,10,4,0,2,0,2],"span":[378,12,13]},{"path":[4,10,4,0,2,1],"span":[380,4,18],"leadingComments":" etc.\n","trailingComments":" Use ReflectionOps to implement these methods.\n"},{"path":[4,10,4,0,2,1,1],"span":[380,4,13]},{"path":[4,10,4,0,2,1,2],"span":[380,16,17]},{"path":[4,10,4,0,2,2],"span":[381,4,21],"trailingComments":" Generate code using MessageLite and the lite runtime.\n"},{"path":[4,10,4,0,2,2,1],"span":[381,4,16]},{"path":[4,10,4,0,2,2,2],"span":[381,19,20]},{"path":[4,10,2,5],"span":[383,2,59]},{"path":[4,10,2,5,4],"span":[383,2,10]},{"path":[4,10,2,5,6],"span":[383,11,23]},{"path":[4,10,2,5,1],"span":[383,24,36]},{"path":[4,10,2,5,3],"span":[383,39,40]},{"path":[4,10,2,5,8],"span":[383,41,58]},{"path":[4,10,2,5,7],"span":[383,42,57]},{"path":[4,10,2,6],"span":[390,2,34],"leadingComments":" Sets the Go package where structs generated from this .proto will be\n placed. If omitted, the Go package will be derived from the following:\n - The basename of the package import path, if provided.\n - Otherwise, the package statement in the .proto file, if present.\n - Otherwise, the basename of the .proto file, without extension.\n"},{"path":[4,10,2,6,4],"span":[390,2,10]},{"path":[4,10,2,6,5],"span":[390,11,17]},{"path":[4,10,2,6,1],"span":[390,18,28]},{"path":[4,10,2,6,3],"span":[390,31,33]},{"path":[4,10,2,7],"span":[405,2,59],"leadingComments":" Should generic services be generated in each language? \"Generic\" services\n are not specific to any particular RPC system. They are generated by the\n main code generators in each language (without additional plugins).\n Generic services were the only kind of service generation supported by\n early versions of google.protobuf.\n\n Generic services are now considered deprecated in favor of using plugins\n that generate code specific to your particular RPC system. Therefore,\n these default to false. Old code which depends on generic services should\n explicitly set them to true.\n"},{"path":[4,10,2,7,4],"span":[405,2,10]},{"path":[4,10,2,7,5],"span":[405,11,15]},{"path":[4,10,2,7,1],"span":[405,16,35]},{"path":[4,10,2,7,3],"span":[405,38,40]},{"path":[4,10,2,7,8],"span":[405,41,58]},{"path":[4,10,2,7,7],"span":[405,42,57]},{"path":[4,10,2,8],"span":[406,2,61]},{"path":[4,10,2,8,4],"span":[406,2,10]},{"path":[4,10,2,8,5],"span":[406,11,15]},{"path":[4,10,2,8,1],"span":[406,16,37]},{"path":[4,10,2,8,3],"span":[406,40,42]},{"path":[4,10,2,8,8],"span":[406,43,60]},{"path":[4,10,2,8,7],"span":[406,44,59]},{"path":[4,10,2,9],"span":[407,2,59]},{"path":[4,10,2,9,4],"span":[407,2,10]},{"path":[4,10,2,9,5],"span":[407,11,15]},{"path":[4,10,2,9,1],"span":[407,16,35]},{"path":[4,10,2,9,3],"span":[407,38,40]},{"path":[4,10,2,9,8],"span":[407,41,58]},{"path":[4,10,2,9,7],"span":[407,42,57]},{"path":[4,10,2,10],"span":[408,2,60]},{"path":[4,10,2,10,4],"span":[408,2,10]},{"path":[4,10,2,10,5],"span":[408,11,15]},{"path":[4,10,2,10,1],"span":[408,16,36]},{"path":[4,10,2,10,3],"span":[408,39,41]},{"path":[4,10,2,10,8],"span":[408,42,59]},{"path":[4,10,2,10,7],"span":[408,43,58]},{"path":[4,10,2,11],"span":[414,2,50],"leadingComments":" Is this file deprecated?\n Depending on the target platform, this can emit Deprecated annotations\n for everything in the file, or it will be completely ignored; in the very\n least, this is a formalization for deprecating files.\n"},{"path":[4,10,2,11,4],"span":[414,2,10]},{"path":[4,10,2,11,5],"span":[414,11,15]},{"path":[4,10,2,11,1],"span":[414,16,26]},{"path":[4,10,2,11,3],"span":[414,29,31]},{"path":[4,10,2,11,8],"span":[414,32,49]},{"path":[4,10,2,11,7],"span":[414,33,48]},{"path":[4,10,2,12],"span":[418,2,55],"leadingComments":" Enables the use of arenas for the proto messages in this file. This applies\n only to generated classes for C++.\n"},{"path":[4,10,2,12,4],"span":[418,2,10]},{"path":[4,10,2,12,5],"span":[418,11,15]},{"path":[4,10,2,12,1],"span":[418,16,32]},{"path":[4,10,2,12,3],"span":[418,35,37]},{"path":[4,10,2,12,8],"span":[418,38,54]},{"path":[4,10,2,12,7],"span":[418,39,53]},{"path":[4,10,2,13],"span":[423,2,41],"leadingComments":" Sets the objective c class prefix which is prepended to all objective c\n generated classes from this .proto. There is no default.\n"},{"path":[4,10,2,13,4],"span":[423,2,10]},{"path":[4,10,2,13,5],"span":[423,11,17]},{"path":[4,10,2,13,1],"span":[423,18,35]},{"path":[4,10,2,13,3],"span":[423,38,40]},{"path":[4,10,2,14],"span":[426,2,40],"leadingComments":" Namespace for generated classes; defaults to the package.\n"},{"path":[4,10,2,14,4],"span":[426,2,10]},{"path":[4,10,2,14,5],"span":[426,11,17]},{"path":[4,10,2,14,1],"span":[426,18,34]},{"path":[4,10,2,14,3],"span":[426,37,39]},{"path":[4,10,2,15],"span":[432,2,36],"leadingComments":" By default Swift generators will take the proto package and CamelCase it\n replacing '.' with underscore and use that to prefix the types/symbols\n defined. When this options is provided, they will use this value instead\n to prefix the types/symbols defined.\n"},{"path":[4,10,2,15,4],"span":[432,2,10]},{"path":[4,10,2,15,5],"span":[432,11,17]},{"path":[4,10,2,15,1],"span":[432,18,30]},{"path":[4,10,2,15,3],"span":[432,33,35]},{"path":[4,10,2,16],"span":[436,2,40],"leadingComments":" Sets the php class prefix which is prepended to all php generated classes\n from this .proto. Default is empty.\n"},{"path":[4,10,2,16,4],"span":[436,2,10]},{"path":[4,10,2,16,5],"span":[436,11,17]},{"path":[4,10,2,16,1],"span":[436,18,34]},{"path":[4,10,2,16,3],"span":[436,37,39]},{"path":[4,10,2,17],"span":[441,2,37],"leadingComments":" Use this option to change the namespace of php generated classes. Default\n is empty. When this option is empty, the package name will be used for\n determining the namespace.\n"},{"path":[4,10,2,17,4],"span":[441,2,10]},{"path":[4,10,2,17,5],"span":[441,11,17]},{"path":[4,10,2,17,1],"span":[441,18,31]},{"path":[4,10,2,17,3],"span":[441,34,36]},{"path":[4,10,2,18],"span":[446,2,46],"leadingComments":" Use this option to change the namespace of php generated metadata classes.\n Default is empty. When this option is empty, the proto file name will be\n used for determining the namespace.\n"},{"path":[4,10,2,18,4],"span":[446,2,10]},{"path":[4,10,2,18,5],"span":[446,11,17]},{"path":[4,10,2,18,1],"span":[446,18,40]},{"path":[4,10,2,18,3],"span":[446,43,45]},{"path":[4,10,2,19],"span":[451,2,36],"leadingComments":" Use this option to change the package of ruby generated classes. Default\n is empty. When this option is not set, the package name will be used for\n determining the ruby package.\n"},{"path":[4,10,2,19,4],"span":[451,2,10]},{"path":[4,10,2,19,5],"span":[451,11,17]},{"path":[4,10,2,19,1],"span":[451,18,30]},{"path":[4,10,2,19,3],"span":[451,33,35]},{"path":[4,10,2,20],"span":[456,2,58],"leadingComments":" The parser stores options it doesn't recognize here.\n See the documentation for the \"Options\" section above.\n"},{"path":[4,10,2,20,4],"span":[456,2,10]},{"path":[4,10,2,20,6],"span":[456,11,30]},{"path":[4,10,2,20,1],"span":[456,31,51]},{"path":[4,10,2,20,3],"span":[456,54,57]},{"path":[4,10,5],"span":[460,2,25],"leadingComments":" Clients can define custom options in extensions of this message.\n See the documentation for the \"Options\" section above.\n"},{"path":[4,10,5,0],"span":[460,13,24]},{"path":[4,10,5,0,1],"span":[460,13,17]},{"path":[4,10,5,0,2],"span":[460,21,24]},{"path":[4,10,9],"span":[462,2,14]},{"path":[4,10,9,0],"span":[462,11,13]},{"path":[4,10,9,0,1],"span":[462,11,13]},{"path":[4,11],"span":[465,0,531,1]},{"path":[4,11,1],"span":[465,8,22]},{"path":[4,11,2,0],"span":[484,2,62],"leadingComments":" Set true to use the old proto1 MessageSet wire format for extensions.\n This is provided for backwards-compatibility with the MessageSet wire\n format. You should not use this for any other reason: It's less\n efficient, has fewer features, and is more complicated.\n\n The message must be defined exactly as follows:\n message Foo {\n option message_set_wire_format = true;\n extensions 4 to max;\n }\n Note that the message cannot have any defined fields; MessageSets only\n have extensions.\n\n All extensions of your type must be singular messages; e.g. they cannot\n be int32s, enums, or repeated messages.\n\n Because this is an option, the above two restrictions are not enforced by\n the protocol compiler.\n"},{"path":[4,11,2,0,4],"span":[484,2,10]},{"path":[4,11,2,0,5],"span":[484,11,15]},{"path":[4,11,2,0,1],"span":[484,16,39]},{"path":[4,11,2,0,3],"span":[484,42,43]},{"path":[4,11,2,0,8],"span":[484,44,61]},{"path":[4,11,2,0,7],"span":[484,45,60]},{"path":[4,11,2,1],"span":[489,2,70],"leadingComments":" Disables the generation of the standard \"descriptor()\" accessor, which can\n conflict with a field of the same name. This is meant to make migration\n from proto1 easier; new code should avoid fields named \"descriptor\".\n"},{"path":[4,11,2,1,4],"span":[489,2,10]},{"path":[4,11,2,1,5],"span":[489,11,15]},{"path":[4,11,2,1,1],"span":[489,16,47]},{"path":[4,11,2,1,3],"span":[489,50,51]},{"path":[4,11,2,1,8],"span":[489,52,69]},{"path":[4,11,2,1,7],"span":[489,53,68]},{"path":[4,11,2,2],"span":[495,2,49],"leadingComments":" Is this message deprecated?\n Depending on the target platform, this can emit Deprecated annotations\n for the message, or it will be completely ignored; in the very least,\n this is a formalization for deprecating messages.\n"},{"path":[4,11,2,2,4],"span":[495,2,10]},{"path":[4,11,2,2,5],"span":[495,11,15]},{"path":[4,11,2,2,1],"span":[495,16,26]},{"path":[4,11,2,2,3],"span":[495,29,30]},{"path":[4,11,2,2,8],"span":[495,31,48]},{"path":[4,11,2,2,7],"span":[495,32,47]},{"path":[4,11,9],"span":[497,2,19]},{"path":[4,11,9,0],"span":[497,11,12]},{"path":[4,11,9,0,1],"span":[497,11,12]},{"path":[4,11,9,1],"span":[497,14,15]},{"path":[4,11,9,1,1],"span":[497,14,15]},{"path":[4,11,9,2],"span":[497,17,18]},{"path":[4,11,9,2,1],"span":[497,17,18]},{"path":[4,11,2,3],"span":[520,2,30],"leadingComments":" Whether the message is an automatically generated map entry type for the\n maps field.\n\n For maps fields:\n map<KeyType, ValueType> map_field = 1;\n The parsed descriptor looks like:\n message MapFieldEntry {\n option map_entry = true;\n optional KeyType key = 1;\n optional ValueType value = 2;\n }\n repeated MapFieldEntry map_field = 1;\n\n Implementations may choose not to generate the map_entry=true message, but\n use a native map in the target language to hold the keys and values.\n The reflection APIs in such implementations still need to work as\n if the field is a repeated message field.\n\n NOTE: Do not set the option in .proto files. Always use the maps syntax\n instead. The option should only be implicitly set by the proto compiler\n parser.\n"},{"path":[4,11,2,3,4],"span":[520,2,10]},{"path":[4,11,2,3,5],"span":[520,11,15]},{"path":[4,11,2,3,1],"span":[520,16,25]},{"path":[4,11,2,3,3],"span":[520,28,29]},{"path":[4,11,9],"span":[522,2,13],"trailingComments":" javalite_serializable\n"},{"path":[4,11,9,3],"span":[522,11,12]},{"path":[4,11,9,3,1],"span":[522,11,12]},{"path":[4,11,9],"span":[523,2,13],"trailingComments":" javanano_as_lite\n"},{"path":[4,11,9,4],"span":[523,11,12]},{"path":[4,11,9,4,1],"span":[523,11,12]},{"path":[4,11,2,4],"span":[527,2,58],"leadingComments":" The parser stores options it doesn't recognize here. See above.\n"},{"path":[4,11,2,4,4],"span":[527,2,10]},{"path":[4,11,2,4,6],"span":[527,11,30]},{"path":[4,11,2,4,1],"span":[527,31,51]},{"path":[4,11,2,4,3],"span":[527,54,57]},{"path":[4,11,5],"span":[530,2,25],"leadingComments":" Clients can define custom options in extensions of this message. See above.\n"},{"path":[4,11,5,0],"span":[530,13,24]},{"path":[4,11,5,0,1],"span":[530,13,17]},{"path":[4,11,5,0,2],"span":[530,21,24]},{"path":[4,12],"span":[533,0,635,1]},{"path":[4,12,1],"span":[533,8,20]},{"path":[4,12,2,0],"span":[538,2,46],"leadingComments":" The ctype option instructs the C++ code generator to use a different\n representation of the field than it normally would. See the specific\n options below. This option is not yet implemented in the open source\n release -- sorry, we'll try to include it in a future version!\n"},{"path":[4,12,2,0,4],"span":[538,2,10]},{"path":[4,12,2,0,6],"span":[538,11,16]},{"path":[4,12,2,0,1],"span":[538,17,22]},{"path":[4,12,2,0,3],"span":[538,25,26]},{"path":[4,12,2,0,8],"span":[538,27,45]},{"path":[4,12,2,0,7],"span":[538,28,44]},{"path":[4,12,4,0],"span":[539,2,546,3]},{"path":[4,12,4,0,1],"span":[539,7,12]},{"path":[4,12,4,0,2,0],"span":[541,4,15],"leadingComments":" Default mode.\n"},{"path":[4,12,4,0,2,0,1],"span":[541,4,10]},{"path":[4,12,4,0,2,0,2],"span":[541,13,14]},{"path":[4,12,4,0,2,1],"span":[543,4,13]},{"path":[4,12,4,0,2,1,1],"span":[543,4,8]},{"path":[4,12,4,0,2,1,2],"span":[543,11,12]},{"path":[4,12,4,0,2,2],"span":[545,4,21]},{"path":[4,12,4,0,2,2,1],"span":[545,4,16]},{"path":[4,12,4,0,2,2,2],"span":[545,19,20]},{"path":[4,12,2,1],"span":[552,2,27],"leadingComments":" The packed option can be enabled for repeated primitive fields to enable\n a more efficient representation on the wire. Rather than repeatedly\n writing the tag and type for each element, the entire array is encoded as\n a single length-delimited blob. In proto3, only explicit setting it to\n false will avoid using packed encoding.\n"},{"path":[4,12,2,1,4],"span":[552,2,10]},{"path":[4,12,2,1,5],"span":[552,11,15]},{"path":[4,12,2,1,1],"span":[552,16,22]},{"path":[4,12,2,1,3],"span":[552,25,26]},{"path":[4,12,2,2],"span":[565,2,51],"leadingComments":" The jstype option determines the JavaScript type used for values of the\n field. The option is permitted only for 64 bit integral and fixed types\n (int64, uint64, sint64, fixed64, sfixed64). A field with jstype JS_STRING\n is represented as JavaScript string, which avoids loss of precision that\n can happen when a large value is converted to a floating point JavaScript.\n Specifying JS_NUMBER for the jstype causes the generated JavaScript code to\n use the JavaScript \"number\" type. The behavior of the default option\n JS_NORMAL is implementation dependent.\n\n This option is an enum to permit additional types to be added, e.g.\n goog.math.Integer.\n"},{"path":[4,12,2,2,4],"span":[565,2,10]},{"path":[4,12,2,2,6],"span":[565,11,17]},{"path":[4,12,2,2,1],"span":[565,18,24]},{"path":[4,12,2,2,3],"span":[565,27,28]},{"path":[4,12,2,2,8],"span":[565,29,50]},{"path":[4,12,2,2,7],"span":[565,30,49]},{"path":[4,12,4,1],"span":[566,2,575,3]},{"path":[4,12,4,1,1],"span":[566,7,13]},{"path":[4,12,4,1,2,0],"span":[568,4,18],"leadingComments":" Use the default type.\n"},{"path":[4,12,4,1,2,0,1],"span":[568,4,13]},{"path":[4,12,4,1,2,0,2],"span":[568,16,17]},{"path":[4,12,4,1,2,1],"span":[571,4,18],"leadingComments":" Use JavaScript strings.\n"},{"path":[4,12,4,1,2,1,1],"span":[571,4,13]},{"path":[4,12,4,1,2,1,2],"span":[571,16,17]},{"path":[4,12,4,1,2,2],"span":[574,4,18],"leadingComments":" Use JavaScript numbers.\n"},{"path":[4,12,4,1,2,2,1],"span":[574,4,13]},{"path":[4,12,4,1,2,2,2],"span":[574,16,17]},{"path":[4,12,2,3],"span":[611,2,43],"leadingComments":" Should this field be parsed lazily? Lazy applies only to message-type\n fields. It means that when the outer message is initially parsed, the\n inner message's contents will not be parsed but instead stored in encoded\n form. The inner message will actually be parsed when it is first accessed.\n\n This is only a hint. Implementations are free to choose whether to use\n eager or lazy parsing regardless of the value of this option. However,\n setting this option true suggests that the protocol author believes that\n using lazy parsing on this field is worth the additional bookkeeping\n overhead typically needed to implement it.\n\n This option does not affect the public interface of any generated code;\n all method signatures remain the same. Furthermore, thread-safety of the\n interface is not affected by this option; const methods remain safe to\n call from multiple threads concurrently, while non-const methods continue\n to require exclusive access.\n\n\n Note that implementations may choose not to check required fields within\n a lazy sub-message. That is, calling IsInitialized() on the outer message\n may return true even if the inner message has missing required fields.\n This is necessary because otherwise the inner message would have to be\n parsed in order to perform the check, defeating the purpose of lazy\n parsing. An implementation which chooses not to check required fields\n must be consistent about it. That is, for any particular sub-message, the\n implementation must either *always* check its required fields, or *never*\n check its required fields, regardless of whether or not the message has\n been parsed.\n\n As of 2021, lazy does no correctness checks on the byte stream during\n parsing. This may lead to crashes if and when an invalid byte stream is\n finally parsed upon access.\n\n TODO(b/211906113): Enable validation on lazy fields.\n"},{"path":[4,12,2,3,4],"span":[611,2,10]},{"path":[4,12,2,3,5],"span":[611,11,15]},{"path":[4,12,2,3,1],"span":[611,16,20]},{"path":[4,12,2,3,3],"span":[611,23,24]},{"path":[4,12,2,3,8],"span":[611,25,42]},{"path":[4,12,2,3,7],"span":[611,26,41]},{"path":[4,12,2,4],"span":[616,2,55],"leadingComments":" unverified_lazy does no correctness checks on the byte stream. This should\n only be used where lazy with verification is prohibitive for performance\n reasons.\n"},{"path":[4,12,2,4,4],"span":[616,2,10]},{"path":[4,12,2,4,5],"span":[616,11,15]},{"path":[4,12,2,4,1],"span":[616,16,31]},{"path":[4,12,2,4,3],"span":[616,34,36]},{"path":[4,12,2,4,8],"span":[616,37,54]},{"path":[4,12,2,4,7],"span":[616,38,53]},{"path":[4,12,2,5],"span":[622,2,49],"leadingComments":" Is this field deprecated?\n Depending on the target platform, this can emit Deprecated annotations\n for accessors, or it will be completely ignored; in the very least, this\n is a formalization for deprecating fields.\n"},{"path":[4,12,2,5,4],"span":[622,2,10]},{"path":[4,12,2,5,5],"span":[622,11,15]},{"path":[4,12,2,5,1],"span":[622,16,26]},{"path":[4,12,2,5,3],"span":[622,29,30]},{"path":[4,12,2,5,8],"span":[622,31,48]},{"path":[4,12,2,5,7],"span":[622,32,47]},{"path":[4,12,2,6],"span":[625,2,44],"leadingComments":" For Google-internal migration only. Do not use.\n"},{"path":[4,12,2,6,4],"span":[625,2,10]},{"path":[4,12,2,6,5],"span":[625,11,15]},{"path":[4,12,2,6,1],"span":[625,16,20]},{"path":[4,12,2,6,3],"span":[625,23,25]},{"path":[4,12,2,6,8],"span":[625,26,43]},{"path":[4,12,2,6,7],"span":[625,27,42]},{"path":[4,12,2,7],"span":[629,2,58],"leadingComments":" The parser stores options it doesn't recognize here. See above.\n"},{"path":[4,12,2,7,4],"span":[629,2,10]},{"path":[4,12,2,7,6],"span":[629,11,30]},{"path":[4,12,2,7,1],"span":[629,31,51]},{"path":[4,12,2,7,3],"span":[629,54,57]},{"path":[4,12,5],"span":[632,2,25],"leadingComments":" Clients can define custom options in extensions of this message. See above.\n"},{"path":[4,12,5,0],"span":[632,13,24]},{"path":[4,12,5,0,1],"span":[632,13,17]},{"path":[4,12,5,0,2],"span":[632,21,24]},{"path":[4,12,9],"span":[634,2,13],"trailingComments":" removed jtype\n"},{"path":[4,12,9,0],"span":[634,11,12]},{"path":[4,12,9,0,1],"span":[634,11,12]},{"path":[4,13],"span":[637,0,643,1]},{"path":[4,13,1],"span":[637,8,20]},{"path":[4,13,2,0],"span":[639,2,58],"leadingComments":" The parser stores options it doesn't recognize here. See above.\n"},{"path":[4,13,2,0,4],"span":[639,2,10]},{"path":[4,13,2,0,6],"span":[639,11,30]},{"path":[4,13,2,0,1],"span":[639,31,51]},{"path":[4,13,2,0,3],"span":[639,54,57]},{"path":[4,13,5],"span":[642,2,25],"leadingComments":" Clients can define custom options in extensions of this message. See above.\n"},{"path":[4,13,5,0],"span":[642,13,24]},{"path":[4,13,5,0,1],"span":[642,13,17]},{"path":[4,13,5,0,2],"span":[642,21,24]},{"path":[4,14],"span":[645,0,664,1]},{"path":[4,14,1],"span":[645,8,19]},{"path":[4,14,2,0],"span":[649,2,32],"leadingComments":" Set this option to true to allow mapping different tag names to the same\n value.\n"},{"path":[4,14,2,0,4],"span":[649,2,10]},{"path":[4,14,2,0,5],"span":[649,11,15]},{"path":[4,14,2,0,1],"span":[649,16,27]},{"path":[4,14,2,0,3],"span":[649,30,31]},{"path":[4,14,2,1],"span":[655,2,49],"leadingComments":" Is this enum deprecated?\n Depending on the target platform, this can emit Deprecated annotations\n for the enum, or it will be completely ignored; in the very least, this\n is a formalization for deprecating enums.\n"},{"path":[4,14,2,1,4],"span":[655,2,10]},{"path":[4,14,2,1,5],"span":[655,11,15]},{"path":[4,14,2,1,1],"span":[655,16,26]},{"path":[4,14,2,1,3],"span":[655,29,30]},{"path":[4,14,2,1,8],"span":[655,31,48]},{"path":[4,14,2,1,7],"span":[655,32,47]},{"path":[4,14,9],"span":[657,2,13],"trailingComments":" javanano_as_lite\n"},{"path":[4,14,9,0],"span":[657,11,12]},{"path":[4,14,9,0,1],"span":[657,11,12]},{"path":[4,14,2,2],"span":[660,2,58],"leadingComments":" The parser stores options it doesn't recognize here. See above.\n"},{"path":[4,14,2,2,4],"span":[660,2,10]},{"path":[4,14,2,2,6],"span":[660,11,30]},{"path":[4,14,2,2,1],"span":[660,31,51]},{"path":[4,14,2,2,3],"span":[660,54,57]},{"path":[4,14,5],"span":[663,2,25],"leadingComments":" Clients can define custom options in extensions of this message. See above.\n"},{"path":[4,14,5,0],"span":[663,13,24]},{"path":[4,14,5,0,1],"span":[663,13,17]},{"path":[4,14,5,0,2],"span":[663,21,24]},{"path":[4,15],"span":[666,0,678,1]},{"path":[4,15,1],"span":[666,8,24]},{"path":[4,15,2,0],"span":[671,2,49],"leadingComments":" Is this enum value deprecated?\n Depending on the target platform, this can emit Deprecated annotations\n for the enum value, or it will be completely ignored; in the very least,\n this is a formalization for deprecating enum values.\n"},{"path":[4,15,2,0,4],"span":[671,2,10]},{"path":[4,15,2,0,5],"span":[671,11,15]},{"path":[4,15,2,0,1],"span":[671,16,26]},{"path":[4,15,2,0,3],"span":[671,29,30]},{"path":[4,15,2,0,8],"span":[671,31,48]},{"path":[4,15,2,0,7],"span":[671,32,47]},{"path":[4,15,2,1],"span":[674,2,58],"leadingComments":" The parser stores options it doesn't recognize here. See above.\n"},{"path":[4,15,2,1,4],"span":[674,2,10]},{"path":[4,15,2,1,6],"span":[674,11,30]},{"path":[4,15,2,1,1],"span":[674,31,51]},{"path":[4,15,2,1,3],"span":[674,54,57]},{"path":[4,15,5],"span":[677,2,25],"leadingComments":" Clients can define custom options in extensions of this message. See above.\n"},{"path":[4,15,5,0],"span":[677,13,24]},{"path":[4,15,5,0,1],"span":[677,13,17]},{"path":[4,15,5,0,2],"span":[677,21,24]},{"path":[4,16],"span":[680,0,698,1]},{"path":[4,16,1],"span":[680,8,22]},{"path":[4,16,2,0],"span":[691,2,50],"leadingComments":" Is this service deprecated?\n Depending on the target platform, this can emit Deprecated annotations\n for the service, or it will be completely ignored; in the very least,\n this is a formalization for deprecating services.\n","leadingDetachedComments":[" Note: Field numbers 1 through 32 are reserved for Google's internal RPC\n framework. We apologize for hoarding these numbers to ourselves, but\n we were already using them long before we decided to release Protocol\n Buffers.\n"]},{"path":[4,16,2,0,4],"span":[691,2,10]},{"path":[4,16,2,0,5],"span":[691,11,15]},{"path":[4,16,2,0,1],"span":[691,16,26]},{"path":[4,16,2,0,3],"span":[691,29,31]},{"path":[4,16,2,0,8],"span":[691,32,49]},{"path":[4,16,2,0,7],"span":[691,33,48]},{"path":[4,16,2,1],"span":[694,2,58],"leadingComments":" The parser stores options it doesn't recognize here. See above.\n"},{"path":[4,16,2,1,4],"span":[694,2,10]},{"path":[4,16,2,1,6],"span":[694,11,30]},{"path":[4,16,2,1,1],"span":[694,31,51]},{"path":[4,16,2,1,3],"span":[694,54,57]},{"path":[4,16,5],"span":[697,2,25],"leadingComments":" Clients can define custom options in extensions of this message. See above.\n"},{"path":[4,16,5,0],"span":[697,13,24]},{"path":[4,16,5,0,1],"span":[697,13,17]},{"path":[4,16,5,0,2],"span":[697,21,24]},{"path":[4,17],"span":[700,0,729,1]},{"path":[4,17,1],"span":[700,8,21]},{"path":[4,17,2,0],"span":[711,2,50],"leadingComments":" Is this method deprecated?\n Depending on the target platform, this can emit Deprecated annotations\n for the method, or it will be completely ignored; in the very least,\n this is a formalization for deprecating methods.\n","leadingDetachedComments":[" Note: Field numbers 1 through 32 are reserved for Google's internal RPC\n framework. We apologize for hoarding these numbers to ourselves, but\n we were already using them long before we decided to release Protocol\n Buffers.\n"]},{"path":[4,17,2,0,4],"span":[711,2,10]},{"path":[4,17,2,0,5],"span":[711,11,15]},{"path":[4,17,2,0,1],"span":[711,16,26]},{"path":[4,17,2,0,3],"span":[711,29,31]},{"path":[4,17,2,0,8],"span":[711,32,49]},{"path":[4,17,2,0,7],"span":[711,33,48]},{"path":[4,17,4,0],"span":[716,2,720,3],"leadingComments":" Is this method side-effect-free (or safe in HTTP parlance), or idempotent,\n or neither? HTTP based RPC implementation may choose GET verb for safe\n methods, and PUT verb for idempotent methods instead of the default POST.\n"},{"path":[4,17,4,0,1],"span":[716,7,23]},{"path":[4,17,4,0,2,0],"span":[717,4,28]},{"path":[4,17,4,0,2,0,1],"span":[717,4,23]},{"path":[4,17,4,0,2,0,2],"span":[717,26,27]},{"path":[4,17,4,0,2,1],"span":[718,4,24],"trailingComments":" implies idempotent\n"},{"path":[4,17,4,0,2,1,1],"span":[718,4,19]},{"path":[4,17,4,0,2,1,2],"span":[718,22,23]},{"path":[4,17,4,0,2,2],"span":[719,4,19],"trailingComments":" idempotent, but may have side effects\n"},{"path":[4,17,4,0,2,2,1],"span":[719,4,14]},{"path":[4,17,4,0,2,2,2],"span":[719,17,18]},{"path":[4,17,2,1],"span":[721,2,722,38]},{"path":[4,17,2,1,4],"span":[721,2,10]},{"path":[4,17,2,1,6],"span":[721,11,27]},{"path":[4,17,2,1,1],"span":[721,28,45]},{"path":[4,17,2,1,3],"span":[721,48,50]},{"path":[4,17,2,1,8],"span":[722,6,37]},{"path":[4,17,2,1,7],"span":[722,7,36]},{"path":[4,17,2,2],"span":[725,2,58],"leadingComments":" The parser stores options it doesn't recognize here. See above.\n"},{"path":[4,17,2,2,4],"span":[725,2,10]},{"path":[4,17,2,2,6],"span":[725,11,30]},{"path":[4,17,2,2,1],"span":[725,31,51]},{"path":[4,17,2,2,3],"span":[725,54,57]},{"path":[4,17,5],"span":[728,2,25],"leadingComments":" Clients can define custom options in extensions of this message. See above.\n"},{"path":[4,17,5,0],"span":[728,13,24]},{"path":[4,17,5,0,1],"span":[728,13,17]},{"path":[4,17,5,0,2],"span":[728,21,24]},{"path":[4,18],"span":[738,0,758,1],"leadingComments":" A message representing a option the parser does not recognize. This only\n appears in options protos created by the compiler::Parser class.\n DescriptorPool resolves these when building Descriptor objects. Therefore,\n options protos in descriptor objects (e.g. returned by Descriptor::options(),\n or produced by Descriptor::CopyTo()) will never have UninterpretedOptions\n in them.\n"},{"path":[4,18,1],"span":[738,8,27]},{"path":[4,18,3,0],"span":[744,2,747,3],"leadingComments":" The name of the uninterpreted option. Each string represents a segment in\n a dot-separated name. is_extension is true iff a segment represents an\n extension (denoted with parentheses in options specs in .proto files).\n E.g.,{ [\"foo\", false], [\"bar.baz\", true], [\"moo\", false] } represents\n \"foo.(bar.baz).moo\".\n"},{"path":[4,18,3,0,1],"span":[744,10,18]},{"path":[4,18,3,0,2,0],"span":[745,4,34]},{"path":[4,18,3,0,2,0,4],"span":[745,4,12]},{"path":[4,18,3,0,2,0,5],"span":[745,13,19]},{"path":[4,18,3,0,2,0,1],"span":[745,20,29]},{"path":[4,18,3,0,2,0,3],"span":[745,32,33]},{"path":[4,18,3,0,2,1],"span":[746,4,35]},{"path":[4,18,3,0,2,1,4],"span":[746,4,12]},{"path":[4,18,3,0,2,1,5],"span":[746,13,17]},{"path":[4,18,3,0,2,1,1],"span":[746,18,30]},{"path":[4,18,3,0,2,1,3],"span":[746,33,34]},{"path":[4,18,2,0],"span":[748,2,29]},{"path":[4,18,2,0,4],"span":[748,2,10]},{"path":[4,18,2,0,6],"span":[748,11,19]},{"path":[4,18,2,0,1],"span":[748,20,24]},{"path":[4,18,2,0,3],"span":[748,27,28]},{"path":[4,18,2,1],"span":[752,2,39],"leadingComments":" The value of the uninterpreted option, in whatever type the tokenizer\n identified it as during parsing. Exactly one of these should be set.\n"},{"path":[4,18,2,1,4],"span":[752,2,10]},{"path":[4,18,2,1,5],"span":[752,11,17]},{"path":[4,18,2,1,1],"span":[752,18,34]},{"path":[4,18,2,1,3],"span":[752,37,38]},{"path":[4,18,2,2],"span":[753,2,41]},{"path":[4,18,2,2,4],"span":[753,2,10]},{"path":[4,18,2,2,5],"span":[753,11,17]},{"path":[4,18,2,2,1],"span":[753,18,36]},{"path":[4,18,2,2,3],"span":[753,39,40]},{"path":[4,18,2,3],"span":[754,2,40]},{"path":[4,18,2,3,4],"span":[754,2,10]},{"path":[4,18,2,3,5],"span":[754,11,16]},{"path":[4,18,2,3,1],"span":[754,17,35]},{"path":[4,18,2,3,3],"span":[754,38,39]},{"path":[4,18,2,4],"span":[755,2,35]},{"path":[4,18,2,4,4],"span":[755,2,10]},{"path":[4,18,2,4,5],"span":[755,11,17]},{"path":[4,18,2,4,1],"span":[755,18,30]},{"path":[4,18,2,4,3],"span":[755,33,34]},{"path":[4,18,2,5],"span":[756,2,34]},{"path":[4,18,2,5,4],"span":[756,2,10]},{"path":[4,18,2,5,5],"span":[756,11,16]},{"path":[4,18,2,5,1],"span":[756,17,29]},{"path":[4,18,2,5,3],"span":[756,32,33]},{"path":[4,18,2,6],"span":[757,2,38]},{"path":[4,18,2,6,4],"span":[757,2,10]},{"path":[4,18,2,6,5],"span":[757,11,17]},{"path":[4,18,2,6,1],"span":[757,18,33]},{"path":[4,18,2,6,3],"span":[757,36,37]},{"path":[4,19],"span":[765,0,894,1],"leadingComments":" Encapsulates information about the original source file from which a\n FileDescriptorProto was generated.\n","leadingDetachedComments":[" ===================================================================\n Optional source code info\n"]},{"path":[4,19,1],"span":[765,8,22]},{"path":[4,19,2,0],"span":[809,2,33],"leadingComments":" A Location identifies a piece of source code in a .proto file which\n corresponds to a particular definition. This information is intended\n to be useful to IDEs, code indexers, documentation generators, and similar\n tools.\n\n For example, say we have a file like:\n message Foo {\n optional string foo = 1;\n }\n Let's look at just the field definition:\n optional string foo = 1;\n ^ ^^ ^^ ^ ^^^\n a bc de f ghi\n We have the following locations:\n span path represents\n [a,i) [ 4, 0, 2, 0 ] The whole field definition.\n [a,b) [ 4, 0, 2, 0, 4 ] The label (optional).\n [c,d) [ 4, 0, 2, 0, 5 ] The type (string).\n [e,f) [ 4, 0, 2, 0, 1 ] The name (foo).\n [g,h) [ 4, 0, 2, 0, 3 ] The number (1).\n\n Notes:\n - A location may refer to a repeated field itself (i.e. not to any\n particular index within it). This is used whenever a set of elements are\n logically enclosed in a single code segment. For example, an entire\n extend block (possibly containing multiple extension definitions) will\n have an outer location whose path refers to the \"extensions\" repeated\n field without an index.\n - Multiple locations may have the same path. This happens when a single\n logical declaration is spread out across multiple places. The most\n obvious example is the \"extend\" block again -- there may be multiple\n extend blocks in the same scope, each of which will have the same path.\n - A location's span is not always a subset of its parent's span. For\n example, the \"extendee\" of an extension declaration appears at the\n beginning of the \"extend\" block and is shared by all extensions within\n the block.\n - Just because a location's span is a subset of some other location's span\n does not mean that it is a descendant. For example, a \"group\" defines\n both a type and a field in a single declaration. Thus, the locations\n corresponding to the type and field and their components will overlap.\n - Code which tries to interpret locations should probably be designed to\n ignore those that it doesn't understand, as more types of locations could\n be recorded in the future.\n"},{"path":[4,19,2,0,4],"span":[809,2,10]},{"path":[4,19,2,0,6],"span":[809,11,19]},{"path":[4,19,2,0,1],"span":[809,20,28]},{"path":[4,19,2,0,3],"span":[809,31,32]},{"path":[4,19,3,0],"span":[810,2,893,3]},{"path":[4,19,3,0,1],"span":[810,10,18]},{"path":[4,19,3,0,2,0],"span":[834,4,44],"leadingComments":" Identifies which part of the FileDescriptorProto was defined at this\n location.\n\n Each element is a field number or an index. They form a path from\n the root FileDescriptorProto to the place where the definition occurs.\n For example, this path:\n [ 4, 3, 2, 7, 1 ]\n refers to:\n file.message_type(3) // 4, 3\n .field(7) // 2, 7\n .name() // 1\n This is because FileDescriptorProto.message_type has field number 4:\n repeated DescriptorProto message_type = 4;\n and DescriptorProto.field has field number 2:\n repeated FieldDescriptorProto field = 2;\n and FieldDescriptorProto.name has field number 1:\n optional string name = 1;\n\n Thus, the above path gives the location of a field name. If we removed\n the last element:\n [ 4, 3, 2, 7 ]\n this path refers to the whole field declaration (from the beginning\n of the label to the terminating semicolon).\n"},{"path":[4,19,3,0,2,0,4],"span":[834,4,12]},{"path":[4,19,3,0,2,0,5],"span":[834,13,18]},{"path":[4,19,3,0,2,0,1],"span":[834,19,23]},{"path":[4,19,3,0,2,0,3],"span":[834,26,27]},{"path":[4,19,3,0,2,0,8],"span":[834,28,43]},{"path":[4,19,3,0,2,0,8,2],"span":[834,29,42]},{"path":[4,19,3,0,2,1],"span":[841,4,44],"leadingComments":" Always has exactly three or four elements: start line, start column,\n end line (optional, otherwise assumed same as start line), end column.\n These are packed into a single field for efficiency. Note that line\n and column numbers are zero-based -- typically you will want to add\n 1 to each before displaying to a user.\n"},{"path":[4,19,3,0,2,1,4],"span":[841,4,12]},{"path":[4,19,3,0,2,1,5],"span":[841,13,18]},{"path":[4,19,3,0,2,1,1],"span":[841,19,23]},{"path":[4,19,3,0,2,1,3],"span":[841,26,27]},{"path":[4,19,3,0,2,1,8],"span":[841,28,43]},{"path":[4,19,3,0,2,1,8,2],"span":[841,29,42]},{"path":[4,19,3,0,2,2],"span":[890,4,41],"leadingComments":" If this SourceCodeInfo represents a complete declaration, these are any\n comments appearing before and after the declaration which appear to be\n attached to the declaration.\n\n A series of line comments appearing on consecutive lines, with no other\n tokens appearing on those lines, will be treated as a single comment.\n\n leading_detached_comments will keep paragraphs of comments that appear\n before (but not connected to) the current element. Each paragraph,\n separated by empty lines, will be one comment element in the repeated\n field.\n\n Only the comment content is provided; comment markers (e.g. //) are\n stripped out. For block comments, leading whitespace and an asterisk\n will be stripped from the beginning of each line other than the first.\n Newlines are included in the output.\n\n Examples:\n\n optional int32 foo = 1; // Comment attached to foo.\n // Comment attached to bar.\n optional int32 bar = 2;\n\n optional string baz = 3;\n // Comment attached to baz.\n // Another line attached to baz.\n\n // Comment attached to moo.\n //\n // Another line attached to moo.\n optional double moo = 4;\n\n // Detached comment for corge. This is not leading or trailing comments\n // to moo or corge because there are blank lines separating it from\n // both.\n\n // Detached comment for corge paragraph 2.\n\n optional string corge = 5;\n /* Block comment attached\n * to corge. Leading asterisks\n * will be removed. */\n /* Block comment attached to\n * grault. */\n optional int32 grault = 6;\n\n // ignored detached comments.\n"},{"path":[4,19,3,0,2,2,4],"span":[890,4,12]},{"path":[4,19,3,0,2,2,5],"span":[890,13,19]},{"path":[4,19,3,0,2,2,1],"span":[890,20,36]},{"path":[4,19,3,0,2,2,3],"span":[890,39,40]},{"path":[4,19,3,0,2,3],"span":[891,4,42]},{"path":[4,19,3,0,2,3,4],"span":[891,4,12]},{"path":[4,19,3,0,2,3,5],"span":[891,13,19]},{"path":[4,19,3,0,2,3,1],"span":[891,20,37]},{"path":[4,19,3,0,2,3,3],"span":[891,40,41]},{"path":[4,19,3,0,2,4],"span":[892,4,50]},{"path":[4,19,3,0,2,4,4],"span":[892,4,12]},{"path":[4,19,3,0,2,4,5],"span":[892,13,19]},{"path":[4,19,3,0,2,4,1],"span":[892,20,45]},{"path":[4,19,3,0,2,4,3],"span":[892,48,49]},{"path":[4,20],"span":[899,0,920,1],"leadingComments":" Describes the relationship between generated code and its original source\n file. A GeneratedCodeInfo message is associated with only one generated\n source file, but may contain references to different source .proto files.\n"},{"path":[4,20,1],"span":[899,8,25]},{"path":[4,20,2,0],"span":[902,2,37],"leadingComments":" An Annotation connects some span of text in generated code to an element\n of its generating .proto file.\n"},{"path":[4,20,2,0,4],"span":[902,2,10]},{"path":[4,20,2,0,6],"span":[902,11,21]},{"path":[4,20,2,0,1],"span":[902,22,32]},{"path":[4,20,2,0,3],"span":[902,35,36]},{"path":[4,20,3,0],"span":[903,2,919,3]},{"path":[4,20,3,0,1],"span":[903,10,20]},{"path":[4,20,3,0,2,0],"span":[906,4,44],"leadingComments":" Identifies the element in the original source .proto file. This field\n is formatted the same as SourceCodeInfo.Location.path.\n"},{"path":[4,20,3,0,2,0,4],"span":[906,4,12]},{"path":[4,20,3,0,2,0,5],"span":[906,13,18]},{"path":[4,20,3,0,2,0,1],"span":[906,19,23]},{"path":[4,20,3,0,2,0,3],"span":[906,26,27]},{"path":[4,20,3,0,2,0,8],"span":[906,28,43]},{"path":[4,20,3,0,2,0,8,2],"span":[906,29,42]},{"path":[4,20,3,0,2,1],"span":[909,4,36],"leadingComments":" Identifies the filesystem path to the original source .proto.\n"},{"path":[4,20,3,0,2,1,4],"span":[909,4,12]},{"path":[4,20,3,0,2,1,5],"span":[909,13,19]},{"path":[4,20,3,0,2,1,1],"span":[909,20,31]},{"path":[4,20,3,0,2,1,3],"span":[909,34,35]},{"path":[4,20,3,0,2,2],"span":[913,4,29],"leadingComments":" Identifies the starting offset in bytes in the generated code\n that relates to the identified object.\n"},{"path":[4,20,3,0,2,2,4],"span":[913,4,12]},{"path":[4,20,3,0,2,2,5],"span":[913,13,18]},{"path":[4,20,3,0,2,2,1],"span":[913,19,24]},{"path":[4,20,3,0,2,2,3],"span":[913,27,28]},{"path":[4,20,3,0,2,3],"span":[918,4,27],"leadingComments":" Identifies the ending offset in bytes in the generated code that\n relates to the identified offset. The end offset should be one past\n the last relevant byte (so the length of the text = end - begin).\n"},{"path":[4,20,3,0,2,3,4],"span":[918,4,12]},{"path":[4,20,3,0,2,3,5],"span":[918,13,18]},{"path":[4,20,3,0,2,3,1],"span":[918,19,22]},{"path":[4,20,3,0,2,3,3],"span":[918,25,26]}]},"bufExtension":{"isImport":true,"isSyntaxUnspecified":false}},{"name":"elide/model/model.proto","package":"elide.model","dependency":["google/protobuf/descriptor.proto"],"messageType":[{"name":"DatapointOptions","field":[{"name":"visibility","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".elide.model.Visibility","jsonName":"visibility"},{"name":"required","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"required"},{"name":"concrete","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"concrete"},{"name":"ephemeral","number":4,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"ephemeral"}]},{"name":"PersistenceOptions","field":[{"name":"mode","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".elide.model.CollectionMode","jsonName":"mode"},{"name":"path","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"path"},{"name":"parent","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"parent"}]},{"name":"TableOptions","field":[{"name":"name","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"name"},{"name":"description","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"description"}]},{"name":"SubmessageOptions","field":[{"name":"mode","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".elide.model.CollectionMode","jsonName":"mode"},{"name":"concrete","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"concrete"},{"name":"path","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"path"},{"name":"embed","number":4,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"embed"}]},{"name":"FieldPersistenceOptions","field":[{"name":"type","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".elide.model.FieldType","jsonName":"type"},{"name":"summary","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"summary"},{"name":"stamp_update","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"stampUpdate"},{"name":"stamp_create","number":4,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"stampCreate"},{"name":"read_only","number":5,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"readOnly"},{"name":"immutable","number":6,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"immutable"},{"name":"explicit","number":7,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"explicit"},{"name":"visibility","number":8,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".elide.model.FieldVisibility","jsonName":"visibility"},{"name":"description","number":9,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"description","options":{"deprecated":true}}]},{"name":"BigQueryOptions","enumType":[{"name":"BigQueryType","value":[{"name":"UNSPECIFIED_TYPE","number":0,"options":{"deprecated":true}},{"name":"STRING","number":1},{"name":"NUMERIC","number":2},{"name":"FLOAT","number":3},{"name":"FLOAT64","number":4},{"name":"INTEGER","number":5},{"name":"INT64","number":6},{"name":"BYTES","number":7},{"name":"RECORD","number":8},{"name":"BOOLEAN","number":9},{"name":"GEOGRAPHY","number":10},{"name":"TIME","number":11},{"name":"DATE","number":12},{"name":"DATETIME","number":13},{"name":"TIMESTAMP","number":14},{"name":"JSON","number":99}]}]},{"name":"SpannerOptions","enumType":[{"name":"SpannerType","value":[{"name":"UNSPECIFIED_TYPE","number":0,"options":{"deprecated":true}},{"name":"STRING","number":1},{"name":"NUMERIC","number":2},{"name":"FLOAT64","number":3},{"name":"INT64","number":4},{"name":"BYTES","number":5},{"name":"BOOL","number":6},{"name":"DATE","number":7},{"name":"TIMESTAMP","number":8},{"name":"JSON","number":9}]}]},{"name":"TableFieldOptions","field":[{"name":"require","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"require"},{"name":"ignore","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"ignore"},{"name":"bqtype","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".elide.model.BigQueryOptions.BigQueryType","jsonName":"bqtype"},{"name":"sptype","number":4,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".elide.model.SpannerOptions.SpannerType","jsonName":"sptype"},{"name":"repeated","number":5,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"repeated"},{"name":"size","number":6,"label":"LABEL_OPTIONAL","type":"TYPE_UINT32","jsonName":"size"},{"name":"name","number":7,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"name"},{"name":"id","number":8,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"id"}]},{"name":"SpannerFieldOptions","field":[{"name":"column","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"column"},{"name":"ignore","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"ignore"},{"name":"type","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".elide.model.SpannerOptions.SpannerType","jsonName":"type"},{"name":"json","number":4,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"json"},{"name":"size","number":5,"label":"LABEL_OPTIONAL","type":"TYPE_UINT32","jsonName":"size"},{"name":"nonnull","number":6,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"nonnull"},{"name":"expression","number":7,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"expression"},{"name":"stored","number":8,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"stored"},{"name":"primary_key","number":9,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"primaryKey"}]},{"name":"ObjectMapping","field":[{"name":"instance","number":1,"label":"LABEL_REPEATED","type":"TYPE_STRING","jsonName":"instance"}]}],"enumType":[{"name":"Visibility","value":[{"name":"PUBLIC","number":0},{"name":"PRIVATE","number":1},{"name":"PROTECTED","number":2},{"name":"PACKAGE","number":3},{"name":"EXPORT","number":4}]},{"name":"CollectionMode","value":[{"name":"NESTED","number":0},{"name":"COLLECTION","number":1},{"name":"GROUP","number":2}]},{"name":"FieldType","value":[{"name":"STANDARD","number":0},{"name":"KEY","number":1},{"name":"ID","number":2},{"name":"TAGS","number":3},{"name":"FLAGS","number":4},{"name":"REFERENCE","number":5},{"name":"TIMESTAMP","number":6},{"name":"PARENT","number":7},{"name":"PATH","number":8}]},{"name":"DatapointType","value":[{"name":"OBJECT","number":0},{"name":"OBJECT_KEY","number":1},{"name":"EVENT","number":2},{"name":"TABLE","number":3},{"name":"WIRE","number":4},{"name":"HASH","number":5}]},{"name":"EnumeratedType","value":[{"name":"GENERIC_ENUMERATION","number":0},{"name":"ERRORS","number":1}]},{"name":"FieldVisibility","value":[{"name":"DEFAULT_VISIBILITY","number":0},{"name":"OPEN","number":1},{"name":"AUTHORIZED","number":2},{"name":"OWNER","number":3},{"name":"INTERNAL","number":4}]}],"extension":[{"name":"role","number":6000,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".elide.model.DatapointType","extendee":".google.protobuf.MessageOptions","jsonName":"role"},{"name":"db","number":6001,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.model.PersistenceOptions","extendee":".google.protobuf.MessageOptions","jsonName":"db"},{"name":"table","number":6002,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.model.TableOptions","extendee":".google.protobuf.MessageOptions","jsonName":"table"},{"name":"map","number":6003,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.model.ObjectMapping","extendee":".google.protobuf.MessageOptions","jsonName":"map"},{"name":"msg","number":6004,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.model.DatapointOptions","extendee":".google.protobuf.MessageOptions","jsonName":"msg"},{"name":"all_internal","number":6005,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","extendee":".google.protobuf.MessageOptions","jsonName":"allInternal"},{"name":"all_sensitive","number":6006,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","extendee":".google.protobuf.MessageOptions","jsonName":"allSensitive"},{"name":"all_uncontrolled","number":6007,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","extendee":".google.protobuf.MessageOptions","jsonName":"allUncontrolled"},{"name":"field","number":7000,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.model.FieldPersistenceOptions","extendee":".google.protobuf.FieldOptions","jsonName":"field"},{"name":"column","number":7001,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.model.TableFieldOptions","extendee":".google.protobuf.FieldOptions","jsonName":"column"},{"name":"collection","number":7002,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.model.SubmessageOptions","extendee":".google.protobuf.FieldOptions","jsonName":"collection"},{"name":"opts","number":7003,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.model.DatapointOptions","extendee":".google.protobuf.FieldOptions","jsonName":"opts"},{"name":"id","number":7004,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","extendee":".google.protobuf.FieldOptions","jsonName":"id"},{"name":"spanner","number":7005,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.model.SpannerFieldOptions","extendee":".google.protobuf.FieldOptions","jsonName":"spanner"},{"name":"internal","number":7006,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","extendee":".google.protobuf.FieldOptions","jsonName":"internal"},{"name":"sensitive","number":7007,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","extendee":".google.protobuf.FieldOptions","jsonName":"sensitive"},{"name":"uncontrolled","number":7008,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","extendee":".google.protobuf.FieldOptions","jsonName":"uncontrolled"},{"name":"label","number":8003,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","extendee":".google.protobuf.EnumValueOptions","jsonName":"label"},{"name":"alias","number":8005,"label":"LABEL_REPEATED","type":"TYPE_STRING","extendee":".google.protobuf.EnumValueOptions","jsonName":"alias"},{"name":"value","number":8007,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.model.DatapointOptions","extendee":".google.protobuf.EnumValueOptions","jsonName":"value"},{"name":"enum_role","number":9000,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".elide.model.EnumeratedType","extendee":".google.protobuf.EnumOptions","jsonName":"enumRole"},{"name":"enumeration","number":9001,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.model.DatapointOptions","extendee":".google.protobuf.EnumOptions","jsonName":"enumeration"}],"options":{"javaPackage":"tools.elide.model","javaOuterClassname":"Datamodel","javaMultipleFiles":true,"javaStringCheckUtf8":true,"optimizeFor":"SPEED","goPackage":"github.com/elide-tools/elide/model/datamodel;datamodel","ccEnableArenas":true,"objcClassPrefix":"ELD","csharpNamespace":"Elide.Model","swiftPrefix":"Elide","phpClassPrefix":"ELD"},"sourceCodeInfo":{"location":[{"span":[17,0,496,1]},{"path":[12],"span":[17,0,18],"leadingComments":"\n Specifies structures that relate to data modeling and the structure of the data. Enumerates collection mode and field\n type, required status, and so on. Also includes field metadata (like summaries, descriptions, and so on).\n","leadingDetachedComments":["\n Copyright © 2022, The Elide Framework Authors. All rights reserved.\n\n The Gust/Elide framework and tools, and all associated source or object computer code, except where otherwise noted,\n are licensed under the Zero Prosperity license, which is enclosed in this repository, in the file LICENSE.txt. Use of\n this code in object or source form requires and implies consent and agreement to that license in principle and\n practice. Source or object code not listing this header, or unless specified otherwise, remain the property of\n Elide LLC and its suppliers, if any. The intellectual and technical concepts contained herein are proprietary to\n Elide LLC and its suppliers and may be covered by U.S. and Foreign Patents, or patents in process, and are protected\n by trade secret and copyright law. Dissemination of this information, or reproduction of this material, in any form,\n is strictly forbidden except in adherence with assigned license requirements.\n"]},{"path":[2],"span":[18,0,20]},{"path":[8],"span":[20,0,28]},{"path":[8,9],"span":[20,0,28]},{"path":[8],"span":[21,0,31]},{"path":[8,31],"span":[21,0,31]},{"path":[8],"span":[22,0,34]},{"path":[8,10],"span":[22,0,34]},{"path":[8],"span":[23,0,37]},{"path":[8,27],"span":[23,0,37]},{"path":[8],"span":[24,0,42]},{"path":[8,8],"span":[24,0,42]},{"path":[8],"span":[25,0,32]},{"path":[8,40],"span":[25,0,32]},{"path":[8],"span":[26,0,30]},{"path":[8,39],"span":[26,0,30]},{"path":[8],"span":[27,0,33]},{"path":[8,36],"span":[27,0,33]},{"path":[8],"span":[28,0,42]},{"path":[8,1],"span":[28,0,42]},{"path":[8],"span":[29,0,40]},{"path":[8,37],"span":[29,0,40]},{"path":[8],"span":[30,0,77]},{"path":[8,11],"span":[30,0,77]},{"path":[3,0],"span":[32,0,42]},{"path":[5,0],"span":[38,0,53,1],"leadingComments":" Sets the visibility of a given object and its constituent properties, in circumstances where the object is served to\n a frontend client/agent. Depending on the visibility of a given property, it may or may not be emitted by an API\n service, or made available (or not) in the JS context.\n"},{"path":[5,0,1],"span":[38,5,15]},{"path":[5,0,2,0],"span":[40,2,13],"leadingComments":" Default visibility: the property or item is public.\n"},{"path":[5,0,2,0,1],"span":[40,2,8]},{"path":[5,0,2,0,2],"span":[40,11,12]},{"path":[5,0,2,1],"span":[43,2,14],"leadingComments":" Private visibility: only usable and addressable by itself, or associated items.\n"},{"path":[5,0,2,1,1],"span":[43,2,9]},{"path":[5,0,2,1,2],"span":[43,12,13]},{"path":[5,0,2,2],"span":[46,2,16],"leadingComments":" Protected visibility: children and other associated objects can access or address this item.\n"},{"path":[5,0,2,2,1],"span":[46,2,11]},{"path":[5,0,2,2,2],"span":[46,14,15]},{"path":[5,0,2,3],"span":[49,2,14],"leadingComments":" Package visibility: items or objects in the same package can access and address this item.\n"},{"path":[5,0,2,3,1],"span":[49,2,9]},{"path":[5,0,2,3,2],"span":[49,12,13]},{"path":[5,0,2,4],"span":[52,2,13],"leadingComments":" Export visibility: expose this item to the outer invoking context.\n"},{"path":[5,0,2,4,1],"span":[52,2,8]},{"path":[5,0,2,4,2],"span":[52,11,12]},{"path":[5,1],"span":[57,0,66,1],"leadingComments":" Specifies how a sub-object in a particular message should be persisted.\n"},{"path":[5,1,1],"span":[57,5,19]},{"path":[5,1,2,0],"span":[59,2,13],"leadingComments":" `NESTED` mode stores the specified collection within the parent document.\n"},{"path":[5,1,2,0,1],"span":[59,2,8]},{"path":[5,1,2,0,2],"span":[59,11,12]},{"path":[5,1,2,1],"span":[62,2,17],"leadingComments":" `COLLECTION` mode stores the specified collection as a sub-collection under the parent document.\n"},{"path":[5,1,2,1,1],"span":[62,2,12]},{"path":[5,1,2,1,2],"span":[62,15,16]},{"path":[5,1,2,2],"span":[65,2,12],"leadingComments":" `GROUP` mode stores the specified collection at the root of the data system.\n"},{"path":[5,1,2,2,1],"span":[65,2,7]},{"path":[5,1,2,2,2],"span":[65,10,11]},{"path":[5,2],"span":[71,0,98,1],"leadingComments":" Enumerates field handling special-cases. Fields may be annotated with these special types to change the way they are\n handled by the model mapping layer.\n"},{"path":[5,2,1],"span":[71,5,14]},{"path":[5,2,2,0],"span":[73,2,15],"leadingComments":" This is a standard field (default value).\n"},{"path":[5,2,2,0,1],"span":[73,2,10]},{"path":[5,2,2,0,2],"span":[73,13,14]},{"path":[5,2,2,1],"span":[76,2,10],"leadingComments":" This is a key field (a primary key sub-message) for a GROUP or COLLECTION-mode message.\n"},{"path":[5,2,2,1,1],"span":[76,2,5]},{"path":[5,2,2,1,2],"span":[76,8,9]},{"path":[5,2,2,2],"span":[79,2,9],"leadingComments":" This is an ID field that should be used as the final name of this document.\n"},{"path":[5,2,2,2,1],"span":[79,2,4]},{"path":[5,2,2,2,2],"span":[79,7,8]},{"path":[5,2,2,3],"span":[82,2,11],"leadingComments":" This is a tags-style field.\n"},{"path":[5,2,2,3,1],"span":[82,2,6]},{"path":[5,2,2,3,2],"span":[82,9,10]},{"path":[5,2,2,4],"span":[85,2,12],"leadingComments":" Store this object as a special flags-style mapping.\n"},{"path":[5,2,2,4,1],"span":[85,2,7]},{"path":[5,2,2,4,2],"span":[85,10,11]},{"path":[5,2,2,5],"span":[88,2,16],"leadingComments":" This key is a foreign reference.\n"},{"path":[5,2,2,5,1],"span":[88,2,11]},{"path":[5,2,2,5,2],"span":[88,14,15]},{"path":[5,2,2,6],"span":[91,2,16],"leadingComments":" This item is a timestamp.\n"},{"path":[5,2,2,6,1],"span":[91,2,11]},{"path":[5,2,2,6,2],"span":[91,14,15]},{"path":[5,2,2,7],"span":[94,2,13],"leadingComments":" This field represents a key for this item's parent.\n"},{"path":[5,2,2,7,1],"span":[94,2,8]},{"path":[5,2,2,7,2],"span":[94,11,12]},{"path":[5,2,2,8],"span":[97,2,11],"leadingComments":" This field represents a full key path in hierarchical storage.\n"},{"path":[5,2,2,8,1],"span":[97,2,6]},{"path":[5,2,2,8,2],"span":[97,9,10]},{"path":[5,3],"span":[103,0,121,1],"leadingComments":" Specifies the types an object may use when defining special objects. These types govern how an object is treated,\n listed, and adapted throughout its lifecycle.\n"},{"path":[5,3,1],"span":[103,5,18]},{"path":[5,3,2,0],"span":[105,2,13],"leadingComments":" The datamodel represents an object record.\n"},{"path":[5,3,2,0,1],"span":[105,2,8]},{"path":[5,3,2,0,2],"span":[105,11,12]},{"path":[5,3,2,1],"span":[108,2,17],"leadingComments":" Specifies that this datapoint type is a record key.\n"},{"path":[5,3,2,1,1],"span":[108,2,12]},{"path":[5,3,2,1,2],"span":[108,15,16]},{"path":[5,3,2,2],"span":[111,2,12],"leadingComments":" The datamodel represents an event type.\n"},{"path":[5,3,2,2,1],"span":[111,2,7]},{"path":[5,3,2,2,2],"span":[111,10,11]},{"path":[5,3,2,3],"span":[114,2,12],"leadingComments":" The datamodel represents a table.\n"},{"path":[5,3,2,3,1],"span":[114,2,7]},{"path":[5,3,2,3,2],"span":[114,10,11]},{"path":[5,3,2,4],"span":[117,2,11],"leadingComments":" The datamodel represents a wire object.\n"},{"path":[5,3,2,4,1],"span":[117,2,6]},{"path":[5,3,2,4,2],"span":[117,9,10]},{"path":[5,3,2,5],"span":[120,2,11],"leadingComments":" The datamodel represents a hash pre-image.\n"},{"path":[5,3,2,5,1],"span":[120,2,6]},{"path":[5,3,2,5,2],"span":[120,9,10]},{"path":[5,4],"span":[126,0,132,1],"leadingComments":" Specifies a special role, if applicable, for a given enumerated type. Each selection governs some special behavior\n related to defined enums with APIs, databases, and so on.\n"},{"path":[5,4,1],"span":[126,5,19]},{"path":[5,4,2,0],"span":[128,2,26],"leadingComments":" Specifies a generic enumeration structure.\n"},{"path":[5,4,2,0,1],"span":[128,2,21]},{"path":[5,4,2,0,2],"span":[128,24,25]},{"path":[5,4,2,1],"span":[131,2,13],"leadingComments":" Specifies a structure which enumerates error states.\n"},{"path":[5,4,2,1,1],"span":[131,2,8]},{"path":[5,4,2,1,2],"span":[131,11,12]},{"path":[4,0],"span":[138,0,155,1],"leadingComments":" Options specified for a given datamodel point (which can be a message, a field, an enum, and so on), which describe\n how the object or field may be validated in various circumstances, and how it should be handled with regard to\n exposure visibility to invoking code.\n"},{"path":[4,0,1],"span":[138,8,24]},{"path":[4,0,2,0],"span":[141,2,28],"leadingComments":" Sets the visibility options for this data point. Depending on these options, a property or model may be exposed to\n invoking code, protected from rewriting, and so on.\n"},{"path":[4,0,2,0,6],"span":[141,2,12]},{"path":[4,0,2,0,1],"span":[141,13,23]},{"path":[4,0,2,0,3],"span":[141,26,27]},{"path":[4,0,2,1],"span":[145,2,20],"leadingComments":" Whether this data point (model or field or enum, etc) should be considered \"required\" for this model to be valid.\n This setting is applied in various circumstances, usually when data crosses API boundaries.\n"},{"path":[4,0,2,1,5],"span":[145,2,6]},{"path":[4,0,2,1,1],"span":[145,7,15]},{"path":[4,0,2,1,3],"span":[145,18,19]},{"path":[4,0,2,2],"span":[150,2,20],"leadingComments":" Whether this property contains a \"concrete\" sub-message, in which case, its properties are lifted to the parent\n entity. During decoding, a property is added to indicate the concrete selection made. This is usually combined with\n generic types in a one-of field, for instance, in `MenuProduct`.\n"},{"path":[4,0,2,2,5],"span":[150,2,6]},{"path":[4,0,2,2,1],"span":[150,7,15]},{"path":[4,0,2,2,3],"span":[150,18,19]},{"path":[4,0,2,3],"span":[154,2,21],"leadingComments":" Indicate to the data storage engine that a given field is ephemeral, and should not be stored, but rather held with\n a calculated value for use in systems upstream from the data storage layer.\n"},{"path":[4,0,2,3,5],"span":[154,2,6]},{"path":[4,0,2,3,1],"span":[154,7,16]},{"path":[4,0,2,3,3],"span":[154,19,20]},{"path":[4,1],"span":[160,0,169,1],"leadingComments":" Specifies options related to persistence of underlying model data associated with this particular message type. This\n includes settings related to Firestore and other data engines.\n"},{"path":[4,1,1],"span":[160,8,26]},{"path":[4,1,2,0],"span":[162,2,26],"leadingComments":" Specifies the storage mode for this entity.\n"},{"path":[4,1,2,0,6],"span":[162,2,16]},{"path":[4,1,2,0,1],"span":[162,17,21]},{"path":[4,1,2,0,3],"span":[162,24,25]},{"path":[4,1,2,1],"span":[165,2,18],"leadingComments":" Data path for a given message, with items in the URL corresponding to parameters in the item's key path.\n"},{"path":[4,1,2,1,5],"span":[165,2,8]},{"path":[4,1,2,1,1],"span":[165,9,13]},{"path":[4,1,2,1,3],"span":[165,16,17]},{"path":[4,1,2,2],"span":[168,2,20],"leadingComments":" Name of this item's parent collection, if applicable.\n"},{"path":[4,1,2,2,5],"span":[168,2,8]},{"path":[4,1,2,2,1],"span":[168,9,15]},{"path":[4,1,2,2,3],"span":[168,18,19]},{"path":[4,2],"span":[174,0,180,1],"leadingComments":" Options specific to model integration with table-style engines, where there can be a table name and/or description\n that should be mapped to a particular message structure.\n"},{"path":[4,2,1],"span":[174,8,20]},{"path":[4,2,2,0],"span":[176,2,18],"leadingComments":" Name of the table bound to this model.\n"},{"path":[4,2,2,0,5],"span":[176,2,8]},{"path":[4,2,2,0,1],"span":[176,9,13]},{"path":[4,2,2,0,3],"span":[176,16,17]},{"path":[4,2,2,1],"span":[179,2,25],"leadingComments":" Description for the table bound to this model.\n"},{"path":[4,2,2,1,5],"span":[179,2,8]},{"path":[4,2,2,1,1],"span":[179,9,20]},{"path":[4,2,2,1,3],"span":[179,23,24]},{"path":[4,3],"span":[184,0,197,1],"leadingComments":" Specifies options related to storing a sub-message.\n"},{"path":[4,3,1],"span":[184,8,25]},{"path":[4,3,2,0],"span":[186,2,26],"leadingComments":" Collection storage mode for the given sub-message field.\n"},{"path":[4,3,2,0,6],"span":[186,2,16]},{"path":[4,3,2,0,1],"span":[186,17,21]},{"path":[4,3,2,0,3],"span":[186,24,25]},{"path":[4,3,2,1],"span":[189,2,22],"leadingComments":" Concrete type name for this sub-message type.\n"},{"path":[4,3,2,1,5],"span":[189,2,8]},{"path":[4,3,2,1,1],"span":[189,9,17]},{"path":[4,3,2,1,3],"span":[189,20,21]},{"path":[4,3,2,2],"span":[192,2,18],"leadingComments":" Data path for the given sub-message field.\n"},{"path":[4,3,2,2,5],"span":[192,2,8]},{"path":[4,3,2,2,1],"span":[192,9,13]},{"path":[4,3,2,2,3],"span":[192,16,17]},{"path":[4,3,2,3],"span":[196,2,17],"leadingComments":" If the persistence node is in `COLLECTION` mode, this flag will embed it in the parent entity anyway. Useful in\n some circumstances where sub-listed data is for indexing, and fetching it repeatedly would be inefficient.\n"},{"path":[4,3,2,3,5],"span":[196,2,6]},{"path":[4,3,2,3,1],"span":[196,7,12]},{"path":[4,3,2,3,3],"span":[196,15,16]},{"path":[5,5],"span":[201,0,216,1],"leadingComments":" Describes the visibility options for a given field.\n"},{"path":[5,5,1],"span":[201,5,20]},{"path":[5,5,2,0],"span":[203,2,25],"leadingComments":" Default visibility level. No change to default behavior.\n"},{"path":[5,5,2,0,1],"span":[203,2,20]},{"path":[5,5,2,0,2],"span":[203,23,24]},{"path":[5,5,2,1],"span":[206,2,11],"leadingComments":" Denotes data that is fine to expose publicly.\n"},{"path":[5,5,2,1,1],"span":[206,2,6]},{"path":[5,5,2,1,2],"span":[206,9,10]},{"path":[5,5,2,2],"span":[209,2,17],"leadingComments":" Denotes data that should only be exposed to authorized users.\n"},{"path":[5,5,2,2,1],"span":[209,2,12]},{"path":[5,5,2,2,2],"span":[209,15,16]},{"path":[5,5,2,3],"span":[212,2,12],"leadingComments":" Denotes data that should only be exposed to users authorized by the owner.\n"},{"path":[5,5,2,3,1],"span":[212,2,7]},{"path":[5,5,2,3,2],"span":[212,10,11]},{"path":[5,5,2,4],"span":[215,2,15],"leadingComments":" Denotes data that should only be exposed internally.\n"},{"path":[5,5,2,4,1],"span":[215,2,10]},{"path":[5,5,2,4,2],"span":[215,13,14]},{"path":[4,4],"span":[220,0,255,1],"leadingComments":" Persistence/data engine options specific to an individual message field.\n"},{"path":[4,4,1],"span":[220,8,31]},{"path":[4,4,2,0],"span":[222,2,21],"leadingComments":" Field type, for special-case fields.\n"},{"path":[4,4,2,0,6],"span":[222,2,11]},{"path":[4,4,2,0,1],"span":[222,12,16]},{"path":[4,4,2,0,3],"span":[222,19,20]},{"path":[4,4,2,1],"span":[226,2,21],"leadingComments":" Summary for this field, which provides a narrative description. It should be suitable for use in external\n circumstances, like documentation.\n"},{"path":[4,4,2,1,5],"span":[226,2,8]},{"path":[4,4,2,1,1],"span":[226,9,16]},{"path":[4,4,2,1,3],"span":[226,19,20]},{"path":[4,4,2,2],"span":[230,2,24],"leadingComments":" This item is a timestamp, and we would like it to be automatically updated each time the model that contains it is\n modified in underlying storage. The field should be read-only.\n"},{"path":[4,4,2,2,5],"span":[230,2,6]},{"path":[4,4,2,2,1],"span":[230,7,19]},{"path":[4,4,2,2,3],"span":[230,22,23]},{"path":[4,4,2,3],"span":[234,2,24],"leadingComments":" This item is a timestamp, and we would like it to be automatically set when the model is created. After that point,\n we would like this field to be read-only.\n"},{"path":[4,4,2,3,5],"span":[234,2,6]},{"path":[4,4,2,3,1],"span":[234,7,19]},{"path":[4,4,2,3,3],"span":[234,22,23]},{"path":[4,4,2,4],"span":[238,2,21],"leadingComments":" This field should not allow writes, but rather produce its value dynamically. Fields marked in this manner cannot\n be set by external code at any point in time.\n"},{"path":[4,4,2,4,5],"span":[238,2,6]},{"path":[4,4,2,4,1],"span":[238,7,16]},{"path":[4,4,2,4,3],"span":[238,19,20]},{"path":[4,4,2,5],"span":[242,2,21],"leadingComments":" This field should allow writes when the model that contains it is written, but then, henceforth, the model should\n not allow this field to be mutated.\n"},{"path":[4,4,2,5,5],"span":[242,2,6]},{"path":[4,4,2,5,1],"span":[242,7,16]},{"path":[4,4,2,5,3],"span":[242,19,20]},{"path":[4,4,2,6],"span":[246,2,20],"leadingComments":" This field should always be explicitly listed with a value, even if it is set to the default value. This function\n is especially useful for enums with default values, when there is a desire to have consistent indexes.\n"},{"path":[4,4,2,6,5],"span":[246,2,6]},{"path":[4,4,2,6,1],"span":[246,7,15]},{"path":[4,4,2,6,3],"span":[246,18,19]},{"path":[4,4,2,7],"span":[251,2,33],"leadingComments":" Describes the visibility level of a given field in a tree of fields. This value applies recursively under message\n fields on which it is applied. Depending on the visibility level active when data is deserialized or serialized,\n certain data may be withheld corresponding to the invoking user or system's access level.\n"},{"path":[4,4,2,7,6],"span":[251,2,17]},{"path":[4,4,2,7,1],"span":[251,18,28]},{"path":[4,4,2,7,3],"span":[251,31,32]},{"path":[4,4,2,8],"span":[254,2,45],"leadingComments":" Provided for backwards compatibility. Do not use.\n"},{"path":[4,4,2,8,5],"span":[254,2,8]},{"path":[4,4,2,8,1],"span":[254,9,20]},{"path":[4,4,2,8,3],"span":[254,23,24]},{"path":[4,4,2,8,8],"span":[254,25,44]},{"path":[4,4,2,8,8,3],"span":[254,26,43]},{"path":[4,5],"span":[259,0,310,1],"leadingComments":" Defines options structures that relate to Google BigQuery.\n"},{"path":[4,5,1],"span":[259,8,23]},{"path":[4,5,4,0],"span":[261,2,309,3],"leadingComments":" Specifies types applicable to BigQuery property translation.\n"},{"path":[4,5,4,0,1],"span":[261,7,19]},{"path":[4,5,4,0,2,0],"span":[263,4,45],"leadingComments":" Unspecified type for Spanner fields.\n"},{"path":[4,5,4,0,2,0,1],"span":[263,4,20]},{"path":[4,5,4,0,2,0,2],"span":[263,23,24]},{"path":[4,5,4,0,2,0,3],"span":[263,25,44]},{"path":[4,5,4,0,2,0,3,1],"span":[263,26,43]},{"path":[4,5,4,0,2,1],"span":[266,4,15],"leadingComments":" Default concrete type for BigQuery columns: `STRING`.\n"},{"path":[4,5,4,0,2,1,1],"span":[266,4,10]},{"path":[4,5,4,0,2,1,2],"span":[266,13,14]},{"path":[4,5,4,0,2,2],"span":[269,4,16],"leadingComments":" `NUMERIC` type.\n"},{"path":[4,5,4,0,2,2,1],"span":[269,4,11]},{"path":[4,5,4,0,2,2,2],"span":[269,14,15]},{"path":[4,5,4,0,2,3],"span":[272,4,14],"leadingComments":" `FLOAT` type.\n"},{"path":[4,5,4,0,2,3,1],"span":[272,4,9]},{"path":[4,5,4,0,2,3,2],"span":[272,12,13]},{"path":[4,5,4,0,2,4],"span":[275,4,16],"leadingComments":" `FLOAT64` type.\n"},{"path":[4,5,4,0,2,4,1],"span":[275,4,11]},{"path":[4,5,4,0,2,4,2],"span":[275,14,15]},{"path":[4,5,4,0,2,5],"span":[278,4,16],"leadingComments":" `INTEGER` type.\n"},{"path":[4,5,4,0,2,5,1],"span":[278,4,11]},{"path":[4,5,4,0,2,5,2],"span":[278,14,15]},{"path":[4,5,4,0,2,6],"span":[281,4,14],"leadingComments":" `INT64` type.\n"},{"path":[4,5,4,0,2,6,1],"span":[281,4,9]},{"path":[4,5,4,0,2,6,2],"span":[281,12,13]},{"path":[4,5,4,0,2,7],"span":[284,4,14],"leadingComments":" `BYTES` type.\n"},{"path":[4,5,4,0,2,7,1],"span":[284,4,9]},{"path":[4,5,4,0,2,7,2],"span":[284,12,13]},{"path":[4,5,4,0,2,8],"span":[287,4,15],"leadingComments":" `RECORD` type.\n"},{"path":[4,5,4,0,2,8,1],"span":[287,4,10]},{"path":[4,5,4,0,2,8,2],"span":[287,13,14]},{"path":[4,5,4,0,2,9],"span":[290,4,16],"leadingComments":" `BOOLEAN` type.\n"},{"path":[4,5,4,0,2,9,1],"span":[290,4,11]},{"path":[4,5,4,0,2,9,2],"span":[290,14,15]},{"path":[4,5,4,0,2,10],"span":[293,4,19],"leadingComments":" `GEOGRAPHY` type.\n"},{"path":[4,5,4,0,2,10,1],"span":[293,4,13]},{"path":[4,5,4,0,2,10,2],"span":[293,16,18]},{"path":[4,5,4,0,2,11],"span":[296,4,14],"leadingComments":" `TIME` type.\n"},{"path":[4,5,4,0,2,11,1],"span":[296,4,8]},{"path":[4,5,4,0,2,11,2],"span":[296,11,13]},{"path":[4,5,4,0,2,12],"span":[299,4,14],"leadingComments":" `DATE` type.\n"},{"path":[4,5,4,0,2,12,1],"span":[299,4,8]},{"path":[4,5,4,0,2,12,2],"span":[299,11,13]},{"path":[4,5,4,0,2,13],"span":[302,4,18],"leadingComments":" `DATETIME` type.\n"},{"path":[4,5,4,0,2,13,1],"span":[302,4,12]},{"path":[4,5,4,0,2,13,2],"span":[302,15,17]},{"path":[4,5,4,0,2,14],"span":[305,4,19],"leadingComments":" `TIMESTAMP` type.\n"},{"path":[4,5,4,0,2,14,1],"span":[305,4,13]},{"path":[4,5,4,0,2,14,2],"span":[305,16,18]},{"path":[4,5,4,0,2,15],"span":[308,4,14],"leadingComments":" `JSON` (special type).\n"},{"path":[4,5,4,0,2,15,1],"span":[308,4,8]},{"path":[4,5,4,0,2,15,2],"span":[308,11,13]},{"path":[4,6],"span":[314,0,347,1],"leadingComments":" Defines options structures that relate to Google Cloud Spanner.\n"},{"path":[4,6,1],"span":[314,8,22]},{"path":[4,6,4,0],"span":[316,2,346,3],"leadingComments":" Specifies types applicable to Spanner property translation.\n"},{"path":[4,6,4,0,1],"span":[316,7,18]},{"path":[4,6,4,0,2,0],"span":[318,4,45],"leadingComments":" Unspecified type for Spanner fields.\n"},{"path":[4,6,4,0,2,0,1],"span":[318,4,20]},{"path":[4,6,4,0,2,0,2],"span":[318,23,24]},{"path":[4,6,4,0,2,0,3],"span":[318,25,44]},{"path":[4,6,4,0,2,0,3,1],"span":[318,26,43]},{"path":[4,6,4,0,2,1],"span":[321,4,15],"leadingComments":" `STRING` type.\n"},{"path":[4,6,4,0,2,1,1],"span":[321,4,10]},{"path":[4,6,4,0,2,1,2],"span":[321,13,14]},{"path":[4,6,4,0,2,2],"span":[324,4,16],"leadingComments":" `NUMERIC` type.\n"},{"path":[4,6,4,0,2,2,1],"span":[324,4,11]},{"path":[4,6,4,0,2,2,2],"span":[324,14,15]},{"path":[4,6,4,0,2,3],"span":[327,4,16],"leadingComments":" `FLOAT64` type.\n"},{"path":[4,6,4,0,2,3,1],"span":[327,4,11]},{"path":[4,6,4,0,2,3,2],"span":[327,14,15]},{"path":[4,6,4,0,2,4],"span":[330,4,14],"leadingComments":" `INT64` type.\n"},{"path":[4,6,4,0,2,4,1],"span":[330,4,9]},{"path":[4,6,4,0,2,4,2],"span":[330,12,13]},{"path":[4,6,4,0,2,5],"span":[333,4,14],"leadingComments":" `BYTES` type.\n"},{"path":[4,6,4,0,2,5,1],"span":[333,4,9]},{"path":[4,6,4,0,2,5,2],"span":[333,12,13]},{"path":[4,6,4,0,2,6],"span":[336,4,13],"leadingComments":" `BOOL` type.\n"},{"path":[4,6,4,0,2,6,1],"span":[336,4,8]},{"path":[4,6,4,0,2,6,2],"span":[336,11,12]},{"path":[4,6,4,0,2,7],"span":[339,4,13],"leadingComments":" `DATE` type.\n"},{"path":[4,6,4,0,2,7,1],"span":[339,4,8]},{"path":[4,6,4,0,2,7,2],"span":[339,11,12]},{"path":[4,6,4,0,2,8],"span":[342,4,18],"leadingComments":" `TIMESTAMP` type.\n"},{"path":[4,6,4,0,2,8,1],"span":[342,4,13]},{"path":[4,6,4,0,2,8,2],"span":[342,16,17]},{"path":[4,6,4,0,2,9],"span":[345,4,13],"leadingComments":" `JSON` (special type).\n"},{"path":[4,6,4,0,2,9,1],"span":[345,4,8]},{"path":[4,6,4,0,2,9,2],"span":[345,11,12]},{"path":[4,7],"span":[351,0,375,1],"leadingComments":" Specifies options specific to storing this field in a tabular-style data engine.\n"},{"path":[4,7,1],"span":[351,8,25]},{"path":[4,7,2,0],"span":[353,2,19],"leadingComments":" Marks this field as `REQUIRED` in tabular schemas.\n"},{"path":[4,7,2,0,5],"span":[353,2,6]},{"path":[4,7,2,0,1],"span":[353,7,14]},{"path":[4,7,2,0,3],"span":[353,17,18]},{"path":[4,7,2,1],"span":[356,2,18],"leadingComments":" Marks this field as ignored for serialization in tabular circumstances.\n"},{"path":[4,7,2,1,5],"span":[356,2,6]},{"path":[4,7,2,1,1],"span":[356,7,13]},{"path":[4,7,2,1,3],"span":[356,16,17]},{"path":[4,7,2,2],"span":[359,2,42],"leadingComments":" Overrides the BigQuery type associated with the exported form of this message field.\n"},{"path":[4,7,2,2,6],"span":[359,2,30]},{"path":[4,7,2,2,1],"span":[359,31,37]},{"path":[4,7,2,2,3],"span":[359,40,41]},{"path":[4,7,2,3],"span":[362,2,40],"leadingComments":" Overrides the Spanner type associated with the exported form of this message field.\n"},{"path":[4,7,2,3,6],"span":[362,2,28]},{"path":[4,7,2,3,1],"span":[362,29,35]},{"path":[4,7,2,3,3],"span":[362,38,39]},{"path":[4,7,2,4],"span":[365,2,20],"leadingComments":" Converts this field into a `REPEATED`-mode field in BigQuery.\n"},{"path":[4,7,2,4,5],"span":[365,2,6]},{"path":[4,7,2,4,1],"span":[365,7,15]},{"path":[4,7,2,4,3],"span":[365,18,19]},{"path":[4,7,2,5],"span":[368,2,18],"leadingComments":" Size of the field. Pass `0` (the default) for maximum width.\n"},{"path":[4,7,2,5,5],"span":[368,2,8]},{"path":[4,7,2,5,1],"span":[368,9,13]},{"path":[4,7,2,5,3],"span":[368,16,17]},{"path":[4,7,2,6],"span":[371,2,18],"leadingComments":" Name of the field in columnar circumstances.\n"},{"path":[4,7,2,6,5],"span":[371,2,8]},{"path":[4,7,2,6,1],"span":[371,9,13]},{"path":[4,7,2,6,3],"span":[371,16,17]},{"path":[4,7,2,7],"span":[374,2,16],"leadingComments":" Unique ID or path assigned to this field in a universally specified data model.\n"},{"path":[4,7,2,7,5],"span":[374,2,8]},{"path":[4,7,2,7,1],"span":[374,9,11]},{"path":[4,7,2,7,3],"span":[374,14,15]},{"path":[4,8],"span":[379,0,406,1],"leadingComments":" Extended options for use with Cloud Spanner, which may be affixed to an individual model field.\n"},{"path":[4,8,1],"span":[379,8,27]},{"path":[4,8,2,0],"span":[381,2,20],"leadingComments":" Override column name in Spanner only.\n"},{"path":[4,8,2,0,5],"span":[381,2,8]},{"path":[4,8,2,0,1],"span":[381,9,15]},{"path":[4,8,2,0,3],"span":[381,18,19]},{"path":[4,8,2,1],"span":[384,2,18],"leadingComments":" Whether to ignore this column in Spanner specifically.\n"},{"path":[4,8,2,1,5],"span":[384,2,6]},{"path":[4,8,2,1,1],"span":[384,7,13]},{"path":[4,8,2,1,3],"span":[384,16,17]},{"path":[4,8,2,2],"span":[387,2,38],"leadingComments":" Override the field type in Spanner only.\n"},{"path":[4,8,2,2,6],"span":[387,2,28]},{"path":[4,8,2,2,1],"span":[387,29,33]},{"path":[4,8,2,2,3],"span":[387,36,37]},{"path":[4,8,2,3],"span":[390,2,16],"leadingComments":" Override the field to store STRUCT objects as JSON.\n"},{"path":[4,8,2,3,5],"span":[390,2,6]},{"path":[4,8,2,3,1],"span":[390,7,11]},{"path":[4,8,2,3,3],"span":[390,14,15]},{"path":[4,8,2,4],"span":[393,2,18],"leadingComments":" Length of this field in the database, when expressed as a string.\n"},{"path":[4,8,2,4,5],"span":[393,2,8]},{"path":[4,8,2,4,1],"span":[393,9,13]},{"path":[4,8,2,4,3],"span":[393,16,17]},{"path":[4,8,2,5],"span":[396,2,19],"leadingComments":" Specifies this column as `NONNULL`, in which case you cannot store `NULL` values in this field.\n"},{"path":[4,8,2,5,5],"span":[396,2,6]},{"path":[4,8,2,5,1],"span":[396,7,14]},{"path":[4,8,2,5,3],"span":[396,17,18]},{"path":[4,8,2,6],"span":[399,2,24],"leadingComments":" Expression value for this field. Converts this field into a calculated value.\n"},{"path":[4,8,2,6,5],"span":[399,2,8]},{"path":[4,8,2,6,1],"span":[399,9,19]},{"path":[4,8,2,6,3],"span":[399,22,23]},{"path":[4,8,2,7],"span":[402,2,18],"leadingComments":" Specifies the `STORED` option for this field. Only applicable if an `expression` is present.\n"},{"path":[4,8,2,7,5],"span":[402,2,6]},{"path":[4,8,2,7,1],"span":[402,7,13]},{"path":[4,8,2,7,3],"span":[402,16,17]},{"path":[4,8,2,8],"span":[405,2,23],"leadingComments":" Marks a field as a member of a Spanner row's primary key.\n"},{"path":[4,8,2,8,5],"span":[405,2,6]},{"path":[4,8,2,8,1],"span":[405,7,18]},{"path":[4,8,2,8,3],"span":[405,21,22]},{"path":[4,9],"span":[410,0,413,1],"leadingComments":" Specifies mappings for an arbitrary protobuf message object.\n"},{"path":[4,9,1],"span":[410,8,21]},{"path":[4,9,2,0],"span":[412,2,31],"leadingComments":" Maps an enumeration instance to this object. Enumeration membership is contextual.\n"},{"path":[4,9,2,0,4],"span":[412,2,10]},{"path":[4,9,2,0,5],"span":[412,11,17]},{"path":[4,9,2,0,1],"span":[412,18,26]},{"path":[4,9,2,0,3],"span":[412,29,30]},{"path":[7],"span":[416,0,445,1]},{"path":[7,0],"span":[420,2,28],"leadingComments":" Specifies the type of datapoint represented by a given message entity. This can be `RECORD` (generally used for\n arbitrary datamodel objects), `EVENT` (specialized telemetry event records), `TABLE` (tabular data, generally used\n for analytics events / BigQuery).\n"},{"path":[7,0,2],"span":[416,7,37]},{"path":[7,0,6],"span":[420,2,15]},{"path":[7,0,1],"span":[420,16,20]},{"path":[7,0,3],"span":[420,23,27]},{"path":[7,1],"span":[423,2,31],"leadingComments":" Settings specific to how a particular message entity is stored in the underlying persistence engine.\n"},{"path":[7,1,2],"span":[416,7,37]},{"path":[7,1,6],"span":[423,2,20]},{"path":[7,1,1],"span":[423,21,23]},{"path":[7,1,3],"span":[423,26,30]},{"path":[7,2],"span":[427,2,28],"leadingComments":" Table-specific configuration for this message. Kicks in when engines are in play that observe or couch data in a\n table/row-style pattern. Usually used for integration with BigQuery.\n"},{"path":[7,2,2],"span":[416,7,37]},{"path":[7,2,6],"span":[427,2,14]},{"path":[7,2,1],"span":[427,15,20]},{"path":[7,2,3],"span":[427,23,27]},{"path":[7,3],"span":[431,2,27],"leadingComments":" Settings that determine meta-mappings between this message object and enumerated states, declared in a foreign\n structure. Foreign structure mappings are contextually defined by the invoking application.\n"},{"path":[7,3,2],"span":[416,7,37]},{"path":[7,3,6],"span":[431,2,15]},{"path":[7,3,1],"span":[431,16,19]},{"path":[7,3,3],"span":[431,22,26]},{"path":[7,4],"span":[435,2,30],"leadingComments":" Settings that specify state for this message, which may include settings related to visibility or handling, and\n validation of this object in various circumstances.\n"},{"path":[7,4,2],"span":[416,7,37]},{"path":[7,4,6],"span":[435,2,18]},{"path":[7,4,1],"span":[435,19,22]},{"path":[7,4,3],"span":[435,25,29]},{"path":[7,5],"span":[438,2,27],"leadingComments":" Marks all fields on a message as \"internal.\" Such fields are only accessible from wrapped messages.\n"},{"path":[7,5,2],"span":[416,7,37]},{"path":[7,5,5],"span":[438,2,6]},{"path":[7,5,1],"span":[438,7,19]},{"path":[7,5,3],"span":[438,22,26]},{"path":[7,6],"span":[441,2,28],"leadingComments":" Marks all fields on a message as sensitive. Sensitive fields are not shown in logs.\n"},{"path":[7,6,2],"span":[416,7,37]},{"path":[7,6,5],"span":[441,2,6]},{"path":[7,6,1],"span":[441,7,20]},{"path":[7,6,3],"span":[441,23,27]},{"path":[7,7],"span":[444,2,31],"leadingComments":" Marks all fields on a message as containing uncontrolled (user-driven) input.\n"},{"path":[7,7,2],"span":[416,7,37]},{"path":[7,7,5],"span":[444,2,6]},{"path":[7,7,1],"span":[444,7,23]},{"path":[7,7,3],"span":[444,26,30]},{"path":[7],"span":[448,0,475,1]},{"path":[7,8],"span":[450,2,39],"leadingComments":" Database engine persistence options specific to an individual document field.\n"},{"path":[7,8,2],"span":[448,7,35]},{"path":[7,8,6],"span":[450,2,25]},{"path":[7,8,1],"span":[450,26,31]},{"path":[7,8,3],"span":[450,34,38]},{"path":[7,9],"span":[453,2,34],"leadingComments":" Specifies options related to storage of this field in a tabular-style data engine.\n"},{"path":[7,9,2],"span":[448,7,35]},{"path":[7,9,6],"span":[453,2,19]},{"path":[7,9,1],"span":[453,20,26]},{"path":[7,9,3],"span":[453,29,33]},{"path":[7,10],"span":[456,2,38],"leadingComments":" Specifies options related to storage of a sub-message-typed field.\n"},{"path":[7,10,2],"span":[448,7,35]},{"path":[7,10,6],"span":[456,2,19]},{"path":[7,10,1],"span":[456,20,30]},{"path":[7,10,3],"span":[456,33,37]},{"path":[7,11],"span":[459,2,31],"leadingComments":" Settings that specify state for this field, including validation settings, as applicable.\n"},{"path":[7,11,2],"span":[448,7,35]},{"path":[7,11,6],"span":[459,2,18]},{"path":[7,11,1],"span":[459,19,23]},{"path":[7,11,3],"span":[459,26,30]},{"path":[7,12],"span":[462,2,19],"leadingComments":" Unique ID or path assigned to this field in a universally specified data model.\n"},{"path":[7,12,2],"span":[448,7,35]},{"path":[7,12,5],"span":[462,2,8]},{"path":[7,12,1],"span":[462,9,11]},{"path":[7,12,3],"span":[462,14,18]},{"path":[7,13],"span":[465,2,37],"leadingComments":" Specifies extended options related specifically to use with Cloud Spanner.\n"},{"path":[7,13,2],"span":[448,7,35]},{"path":[7,13,6],"span":[465,2,21]},{"path":[7,13,1],"span":[465,22,29]},{"path":[7,13,3],"span":[465,32,36]},{"path":[7,14],"span":[468,2,23],"leadingComments":" Marks a field as \"internal.\" Such fields are only accessible from wrapped messages.\n"},{"path":[7,14,2],"span":[448,7,35]},{"path":[7,14,5],"span":[468,2,6]},{"path":[7,14,1],"span":[468,7,15]},{"path":[7,14,3],"span":[468,18,22]},{"path":[7,15],"span":[471,2,24],"leadingComments":" Marks this field as sensitive. Sensitive fields are not shown in logs.\n"},{"path":[7,15,2],"span":[448,7,35]},{"path":[7,15,5],"span":[471,2,6]},{"path":[7,15,1],"span":[471,7,16]},{"path":[7,15,3],"span":[471,19,23]},{"path":[7,16],"span":[474,2,27],"leadingComments":" Marks this field as containing uncontrolled (user-driven) input.\n"},{"path":[7,16,2],"span":[448,7,35]},{"path":[7,16,5],"span":[474,2,6]},{"path":[7,16,1],"span":[474,7,19]},{"path":[7,16,3],"span":[474,22,26]},{"path":[7],"span":[478,0,488,1]},{"path":[7,17],"span":[481,2,22],"leadingComments":" Human-readable label for a given enumeration value state. Optional, can be used by invoking code to generate labels\n for states in forms or other UI.\n"},{"path":[7,17,2],"span":[478,7,39]},{"path":[7,17,5],"span":[481,2,8]},{"path":[7,17,1],"span":[481,9,14]},{"path":[7,17,3],"span":[481,17,21]},{"path":[7,18],"span":[484,2,31],"leadingComments":" Aliases when decoding values of this type.\n"},{"path":[7,18,2],"span":[478,7,39]},{"path":[7,18,4],"span":[484,2,10]},{"path":[7,18,5],"span":[484,11,17]},{"path":[7,18,1],"span":[484,18,23]},{"path":[7,18,3],"span":[484,26,30]},{"path":[7,19],"span":[487,2,32],"leadingComments":" Settings that specify state for this enum value, including validation settings, as applicable.\n"},{"path":[7,19,2],"span":[478,7,39]},{"path":[7,19,6],"span":[487,2,18]},{"path":[7,19,1],"span":[487,19,24]},{"path":[7,19,3],"span":[487,27,31]},{"path":[7],"span":[490,0,496,1]},{"path":[7,20],"span":[492,2,34],"leadingComments":" Specifies a special role, if applicable, for a given enumerated type.\n"},{"path":[7,20,2],"span":[490,7,34]},{"path":[7,20,6],"span":[492,2,16]},{"path":[7,20,1],"span":[492,17,26]},{"path":[7,20,3],"span":[492,29,33]},{"path":[7,21],"span":[495,2,38],"leadingComments":" Settings that specify state for this enum value, including validation settings, as applicable.\n"},{"path":[7,21,2],"span":[490,7,34]},{"path":[7,21,6],"span":[495,2,18]},{"path":[7,21,1],"span":[495,19,30]},{"path":[7,21,3],"span":[495,33,37]}]},"syntax":"proto3","bufExtension":{"isImport":false,"isSyntaxUnspecified":false}},{"name":"google/protobuf/duration.proto","package":"google.protobuf","messageType":[{"name":"Duration","field":[{"name":"seconds","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_INT64","jsonName":"seconds"},{"name":"nanos","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_INT32","jsonName":"nanos"}]}],"options":{"javaPackage":"com.google.protobuf","javaOuterClassname":"DurationProto","javaMultipleFiles":true,"goPackage":"google.golang.org/protobuf/types/known/durationpb","ccEnableArenas":true,"objcClassPrefix":"GPB","csharpNamespace":"Google.Protobuf.WellKnownTypes"},"sourceCodeInfo":{"location":[{"span":[30,0,115,1]},{"path":[12],"span":[30,0,18],"leadingDetachedComments":[" Protocol Buffers - Google's data interchange format\n Copyright 2008 Google Inc. All rights reserved.\n https://developers.google.com/protocol-buffers/\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are\n met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\n copyright notice, this list of conditions and the following disclaimer\n in the documentation and/or other materials provided with the\n distribution.\n * Neither the name of Google Inc. nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"]},{"path":[2],"span":[32,0,24]},{"path":[8],"span":[34,0,59]},{"path":[8,37],"span":[34,0,59]},{"path":[8],"span":[35,0,31]},{"path":[8,31],"span":[35,0,31]},{"path":[8],"span":[36,0,72]},{"path":[8,11],"span":[36,0,72]},{"path":[8],"span":[37,0,44]},{"path":[8,1],"span":[37,0,44]},{"path":[8],"span":[38,0,46]},{"path":[8,8],"span":[38,0,46]},{"path":[8],"span":[39,0,34]},{"path":[8,10],"span":[39,0,34]},{"path":[8],"span":[40,0,33]},{"path":[8,36],"span":[40,0,33]},{"path":[4,0],"span":[102,0,115,1],"leadingComments":" A Duration represents a signed, fixed-length span of time represented\n as a count of seconds and fractions of seconds at nanosecond\n resolution. It is independent of any calendar and concepts like \"day\"\n or \"month\". It is related to Timestamp in that the difference between\n two Timestamp values is a Duration and it can be added or subtracted\n from a Timestamp. Range is approximately +-10,000 years.\n\n # Examples\n\n Example 1: Compute Duration from two Timestamps in pseudo code.\n\n Timestamp start = ...;\n Timestamp end = ...;\n Duration duration = ...;\n\n duration.seconds = end.seconds - start.seconds;\n duration.nanos = end.nanos - start.nanos;\n\n if (duration.seconds < 0 && duration.nanos > 0) {\n duration.seconds += 1;\n duration.nanos -= 1000000000;\n } else if (duration.seconds > 0 && duration.nanos < 0) {\n duration.seconds -= 1;\n duration.nanos += 1000000000;\n }\n\n Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.\n\n Timestamp start = ...;\n Duration duration = ...;\n Timestamp end = ...;\n\n end.seconds = start.seconds + duration.seconds;\n end.nanos = start.nanos + duration.nanos;\n\n if (end.nanos < 0) {\n end.seconds -= 1;\n end.nanos += 1000000000;\n } else if (end.nanos >= 1000000000) {\n end.seconds += 1;\n end.nanos -= 1000000000;\n }\n\n Example 3: Compute Duration from datetime.timedelta in Python.\n\n td = datetime.timedelta(days=3, minutes=10)\n duration = Duration()\n duration.FromTimedelta(td)\n\n # JSON Mapping\n\n In JSON format, the Duration type is encoded as a string rather than an\n object, where the string ends in the suffix \"s\" (indicating seconds) and\n is preceded by the number of seconds, with nanoseconds expressed as\n fractional seconds. For example, 3 seconds with 0 nanoseconds should be\n encoded in JSON format as \"3s\", while 3 seconds and 1 nanosecond should\n be expressed in JSON format as \"3.000000001s\", and 3 seconds and 1\n microsecond should be expressed in JSON format as \"3.000001s\".\n\n\n"},{"path":[4,0,1],"span":[102,8,16]},{"path":[4,0,2,0],"span":[106,2,20],"leadingComments":" Signed seconds of the span of time. Must be from -315,576,000,000\n to +315,576,000,000 inclusive. Note: these bounds are computed from:\n 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years\n"},{"path":[4,0,2,0,5],"span":[106,2,7]},{"path":[4,0,2,0,1],"span":[106,8,15]},{"path":[4,0,2,0,3],"span":[106,18,19]},{"path":[4,0,2,1],"span":[114,2,18],"leadingComments":" Signed fractions of a second at nanosecond resolution of the span\n of time. Durations less than one second are represented with a 0\n `seconds` field and a positive or negative `nanos` field. For durations\n of one second or more, a non-zero value for the `nanos` field must be\n of the same sign as the `seconds` field. Must be from -999,999,999\n to +999,999,999 inclusive.\n"},{"path":[4,0,2,1,5],"span":[114,2,7]},{"path":[4,0,2,1,1],"span":[114,8,13]},{"path":[4,0,2,1,3],"span":[114,16,17]}]},"syntax":"proto3","bufExtension":{"isImport":true,"isSyntaxUnspecified":false}},{"name":"webutil/html/types/html.proto","package":"webutil.html.types","messageType":[{"name":"SafeHtmlProto","field":[{"name":"private_do_not_access_or_else_safe_html_wrapped_value","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"privateDoNotAccessOrElseSafeHtmlWrappedValue","options":{"ctype":"CORD"}}]},{"name":"SafeUrlProto","field":[{"name":"private_do_not_access_or_else_safe_url_wrapped_value","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"privateDoNotAccessOrElseSafeUrlWrappedValue"}]},{"name":"TrustedResourceUrlProto","field":[{"name":"private_do_not_access_or_else_trusted_resource_url_wrapped_value","number":4,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"privateDoNotAccessOrElseTrustedResourceUrlWrappedValue"}]},{"name":"SafeStyleProto","field":[{"name":"private_do_not_access_or_else_safe_style_wrapped_value","number":5,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"privateDoNotAccessOrElseSafeStyleWrappedValue"}]},{"name":"SafeScriptProto","field":[{"name":"private_do_not_access_or_else_safe_script_wrapped_value","number":6,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"privateDoNotAccessOrElseSafeScriptWrappedValue","options":{"ctype":"CORD"}}]},{"name":"SafeStyleSheetProto","field":[{"name":"private_do_not_access_or_else_safe_style_sheet_wrapped_value","number":7,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"privateDoNotAccessOrElseSafeStyleSheetWrappedValue","options":{"ctype":"CORD"}}]}],"enumType":[{"name":"CustomSafeUrlScheme","value":[{"name":"TEL","number":0},{"name":"SMS","number":1},{"name":"CALLTO","number":2},{"name":"WTAI","number":3},{"name":"RTSP","number":4},{"name":"MARKET","number":5},{"name":"GEO","number":6},{"name":"SKYPE","number":7},{"name":"WHATSAPP","number":8},{"name":"ITMS_BOOKS","number":9}]}],"options":{"javaPackage":"com.google.common.html.types","javaOuterClassname":"Html","javaMultipleFiles":true},"sourceCodeInfo":{"location":[{"span":[17,0,135,1]},{"path":[12],"span":[17,0,18],"leadingComments":" Protocol buffer representations of types with security type contracts in the\n HTML realm. See http://github.com/google/safe-html-types/blob/master/doc/safehtml-types.md for an overview of each of the types\n and their programming language API.\n","leadingDetachedComments":[" IMPORTANT: These messages MUST NEVER be instantiated directly, nor its\n fields accessed. The language specific wrapper, like SafeHtml.java,\n is to be used instead.\n\n\n To create or read a proto, use its respective programming language type or\n function. See:\n - For Java: com.google.common.html.types\n\n For tests, if (and only if) you cannot conveniently create the proto using\n the APIs listed above then use:\n - For Java: com.google.common.html.types.testing.HtmlConversions\n - For JS: goog.html.testing\n"]},{"path":[8],"span":[20,0,53]},{"path":[8,1],"span":[20,0,53]},{"path":[8],"span":[21,0,37]},{"path":[8,8],"span":[21,0,37]},{"path":[8],"span":[22,0,34]},{"path":[8,10],"span":[22,0,34]},{"path":[2],"span":[24,0,27]},{"path":[4,0],"span":[41,0,48,1],"leadingComments":" IMPORTANT: It is unsafe to accept this message from an untrusted source,\n since it's trivial for an attacker to forge serialized messages that\n don't fulfill the type's safety contract -- for example, it could contain\n attacker controlled script. A system which receives a SafeHtmlProto\n implicitly trusts the producer of the SafeHtmlProto. So, it's generally safe\n to return this message in RPC responses, but generally unsafe to accept it\n in RPC requests.\n","leadingDetachedComments":[" We use different tag values for the wrapped value of each of these types.\n This provides some protection against mixing up values of different\n types when translated into JSPB array representation (the wrapped value\n for each type will use a different array slot).\n"," Message containing a string that is safe to use in HTML contexts in DOM APIs\n and HTML documents.\n"]},{"path":[4,0,1],"span":[41,8,21]},{"path":[4,0,2,0],"span":[45,2,47,8],"leadingComments":" IMPORTANT: Never set or read this field, even from tests, it is private.\n See documentation at the top of .proto file for programming language\n packages with which to create or read this message.\n"},{"path":[4,0,2,0,4],"span":[45,2,10]},{"path":[4,0,2,0,5],"span":[45,11,17]},{"path":[4,0,2,0,1],"span":[45,18,71]},{"path":[4,0,2,0,3],"span":[45,74,75]},{"path":[4,0,2,0,8],"span":[46,6,47,7]},{"path":[4,0,2,0,8,1],"span":[46,7,17]},{"path":[4,1],"span":[54,0,60,1],"leadingComments":" Message containing a string that is safe to use in URL contexts in DOM APIs\n and HTML documents, where the URL context does not refer to a resource that\n loads code.\n"},{"path":[4,1,1],"span":[54,8,20]},{"path":[4,1,2,0],"span":[58,2,59,7],"leadingComments":" IMPORTANT: Never set or read this field, even from tests, it is private.\n See documentation at the top of .proto file for programming language\n packages with which to create or read this message.\n"},{"path":[4,1,2,0,4],"span":[58,2,10]},{"path":[4,1,2,0,5],"span":[58,11,17]},{"path":[4,1,2,0,1],"span":[58,18,70]},{"path":[4,1,2,0,3],"span":[58,73,74]},{"path":[4,2],"span":[65,0,72,1],"leadingComments":" Message containing a string that is safe to use in all URL contexts in DOM\n APIs and HTML documents; even where the referred-to resource is interpreted\n as code, e.g., as the src of a script element.\n"},{"path":[4,2,1],"span":[65,8,31]},{"path":[4,2,2,0],"span":[69,2,71,11],"leadingComments":" IMPORTANT: Never set or read this field, even from tests, it is private.\n See documentation at the top of .proto file for programming language\n packages with which to create or read this message.\n"},{"path":[4,2,2,0,4],"span":[69,2,10]},{"path":[4,2,2,0,5],"span":[69,11,17]},{"path":[4,2,2,0,1],"span":[70,6,70]},{"path":[4,2,2,0,3],"span":[70,73,74]},{"path":[4,3],"span":[76,0,82,1],"leadingComments":" Message containing a sequence of CSS declarations safe to use in style\n contexts in an HTML document or in DOM APIs.\n"},{"path":[4,3,1],"span":[76,8,22]},{"path":[4,3,2,0],"span":[80,2,81,7],"leadingComments":" IMPORTANT: Never set or read this field, even from tests, it is private.\n See documentation at the top of .proto file for programming language\n packages with which to create or read this message.\n"},{"path":[4,3,2,0,4],"span":[80,2,10]},{"path":[4,3,2,0,5],"span":[80,11,17]},{"path":[4,3,2,0,1],"span":[80,18,72]},{"path":[4,3,2,0,3],"span":[80,75,76]},{"path":[4,4],"span":[86,0,93,1],"leadingComments":" Message containing JavaScript code that is safe to use as the content of an\n HTML script element.\n"},{"path":[4,4,1],"span":[86,8,23]},{"path":[4,4,2,0],"span":[90,2,92,8],"leadingComments":" IMPORTANT: Never set or read this field, even from tests, it is private.\n See documentation at the top of .proto file for programming language\n packages with which to create or read this message.\n"},{"path":[4,4,2,0,4],"span":[90,2,10]},{"path":[4,4,2,0,5],"span":[90,11,17]},{"path":[4,4,2,0,1],"span":[90,18,73]},{"path":[4,4,2,0,3],"span":[90,76,77]},{"path":[4,4,2,0,8],"span":[91,6,92,7]},{"path":[4,4,2,0,8,1],"span":[91,7,17]},{"path":[4,5],"span":[97,0,105,1],"leadingComments":" Message containing a complete CSS style sheet, safe to use in style contexts\n in an HTML document or DOM APIs.\n"},{"path":[4,5,1],"span":[97,8,27]},{"path":[4,5,2,0],"span":[101,2,104,8],"leadingComments":" IMPORTANT: Never set or read this field, even from tests, it is private.\n See documentation at the top of .proto file for programming language\n packages with which to create or read this message.\n"},{"path":[4,5,2,0,4],"span":[101,2,10]},{"path":[4,5,2,0,5],"span":[101,11,17]},{"path":[4,5,2,0,1],"span":[101,18,78]},{"path":[4,5,2,0,3],"span":[102,6,7]},{"path":[4,5,2,0,8],"span":[103,6,104,7]},{"path":[4,5,2,0,8,1],"span":[103,7,17]},{"path":[5,0],"span":[107,0,135,1]},{"path":[5,0,1],"span":[107,5,24]},{"path":[5,0,2,0],"span":[118,2,10],"leadingComments":" Schemes that are safe w.r.t. XSS but that may trigger other problematic\n actions when presented in the context of a \"regular\" link are not\n whitelisted by default but can still be converted to SafeUrl by\n whitelisting them explicitly in the SafeUrl sanitization API. In other\n words, the caller has to indicate that they're expecting to process\n such custom schemes.\n\n iOS Webview does not ask for confirmation before invoking 'tel', so\n unintentional or out-of-context clicks could result in unintended calling\n charges.\n"},{"path":[5,0,2,0,1],"span":[118,2,5]},{"path":[5,0,2,0,2],"span":[118,8,9]},{"path":[5,0,2,1],"span":[119,2,10]},{"path":[5,0,2,1,1],"span":[119,2,5]},{"path":[5,0,2,1,2],"span":[119,8,9]},{"path":[5,0,2,2],"span":[121,2,13],"leadingComments":" Similarly to 'tel' can result in unintended calling charges on iOS.\n"},{"path":[5,0,2,2,1],"span":[121,2,8]},{"path":[5,0,2,2,2],"span":[121,11,12]},{"path":[5,0,2,3],"span":[122,2,11]},{"path":[5,0,2,3,1],"span":[122,2,6]},{"path":[5,0,2,3,2],"span":[122,9,10]},{"path":[5,0,2,4],"span":[125,2,11],"leadingComments":" Can start a media stream, potentially triggering an exploit for\n Stagefright.\n"},{"path":[5,0,2,4,1],"span":[125,2,6]},{"path":[5,0,2,4,2],"span":[125,9,10]},{"path":[5,0,2,5],"span":[128,2,13],"leadingComments":" Can open Play Store dialog with 'Install' button, though will not\n automatically install an app.\n"},{"path":[5,0,2,5,1],"span":[128,2,8]},{"path":[5,0,2,5,2],"span":[128,11,12]},{"path":[5,0,2,6],"span":[129,2,10]},{"path":[5,0,2,6,1],"span":[129,2,5]},{"path":[5,0,2,6,2],"span":[129,8,9]},{"path":[5,0,2,7],"span":[130,2,12]},{"path":[5,0,2,7,1],"span":[130,2,7]},{"path":[5,0,2,7,2],"span":[130,10,11]},{"path":[5,0,2,8],"span":[131,2,15]},{"path":[5,0,2,8,1],"span":[131,2,10]},{"path":[5,0,2,8,2],"span":[131,13,14]},{"path":[5,0,2,9],"span":[134,2,17],"leadingComments":" Custom scheme for iBooks URIs. More background: b/32807272.\n"},{"path":[5,0,2,9,1],"span":[134,2,12]},{"path":[5,0,2,9,2],"span":[134,15,16]}]},"bufExtension":{"isImport":true,"moduleInfo":{"name":{"remote":"buf.build","owner":"elide","repository":"safe-html-types"},"commit":"3d5d7e9b28be4293bba1e2571091590e"},"isSyntaxUnspecified":false}},{"name":"elide/base/language.proto","package":"elide.base","messageType":[{"name":"LanguageSpec","field":[{"name":"language","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".elide.base.Language","oneofIndex":0,"jsonName":"language"},{"name":"iso_language","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","oneofIndex":0,"jsonName":"isoLanguage"},{"name":"iso_country","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","oneofIndex":1,"jsonName":"isoCountry"},{"name":"dialect","number":4,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","oneofIndex":1,"jsonName":"dialect"}],"oneofDecl":[{"name":"selection"},{"name":"modifier"}]}],"enumType":[{"name":"Language","value":[{"name":"ENGLISH","number":0},{"name":"FRENCH","number":1},{"name":"SPANISH","number":2},{"name":"CHINESE","number":3}]}],"options":{"javaPackage":"tools.elide.base","javaOuterClassname":"BaseLanguage","javaMultipleFiles":true,"javaStringCheckUtf8":true,"optimizeFor":"CODE_SIZE","goPackage":"github.com/elide-tools/elide/base","ccEnableArenas":true,"objcClassPrefix":"ELD","csharpNamespace":"Elide.Base","swiftPrefix":"Elide","phpClassPrefix":"ELD"},"sourceCodeInfo":{"location":[{"span":[17,0,70,1]},{"path":[12],"span":[17,0,18],"leadingComments":"\n Defines basic framework structures related to modelling human language. These structures are render-able by the Soy\n templates stored alongside them, and are used for various things throughout the codebase.\n","leadingDetachedComments":["\n Copyright © 2022, The Elide Framework Authors. All rights reserved.\n\n The Gust/Elide framework and tools, and all associated source or object computer code, except where otherwise noted,\n are licensed under the Zero Prosperity license, which is enclosed in this repository, in the file LICENSE.txt. Use of\n this code in object or source form requires and implies consent and agreement to that license in principle and\n practice. Source or object code not listing this header, or unless specified otherwise, remain the property of\n Elide LLC and its suppliers, if any. The intellectual and technical concepts contained herein are proprietary to\n Elide LLC and its suppliers and may be covered by U.S. and Foreign Patents, or patents in process, and are protected\n by trade secret and copyright law. Dissemination of this information, or reproduction of this material, in any form,\n is strictly forbidden except in adherence with assigned license requirements.\n"]},{"path":[2],"span":[18,0,19]},{"path":[8],"span":[20,0,32]},{"path":[8,9],"span":[20,0,32]},{"path":[8],"span":[21,0,31]},{"path":[8,31],"span":[21,0,31]},{"path":[8],"span":[22,0,34]},{"path":[8,10],"span":[22,0,34]},{"path":[8],"span":[23,0,37]},{"path":[8,27],"span":[23,0,37]},{"path":[8],"span":[24,0,45]},{"path":[8,8],"span":[24,0,45]},{"path":[8],"span":[25,0,32]},{"path":[8,40],"span":[25,0,32]},{"path":[8],"span":[26,0,30]},{"path":[8,39],"span":[26,0,30]},{"path":[8],"span":[27,0,33]},{"path":[8,36],"span":[27,0,33]},{"path":[8],"span":[28,0,41]},{"path":[8,1],"span":[28,0,41]},{"path":[8],"span":[29,0,39]},{"path":[8,37],"span":[29,0,39]},{"path":[8],"span":[30,0,56]},{"path":[8,11],"span":[30,0,56]},{"path":[5,0],"span":[36,0,48,1],"leadingComments":" Specifies common/major languages present in software development or the open internet. This is not an exhaustive list\n and if you need to specify an entry that isn't present (without a code change), it is best to opt for the `iso_`-\n prefixed fields in `LanguageSpec`.\n"},{"path":[5,0,1],"span":[36,5,13]},{"path":[5,0,2,0],"span":[38,2,14],"leadingComments":" Generic, unqualified reference to English.\n"},{"path":[5,0,2,0,1],"span":[38,2,9]},{"path":[5,0,2,0,2],"span":[38,12,13]},{"path":[5,0,2,1],"span":[41,2,13],"leadingComments":" Generic, unqualified reference to French.\n"},{"path":[5,0,2,1,1],"span":[41,2,8]},{"path":[5,0,2,1,2],"span":[41,11,12]},{"path":[5,0,2,2],"span":[44,2,14],"leadingComments":" Generic, unqualified reference to Spanish.\n"},{"path":[5,0,2,2,1],"span":[44,2,9]},{"path":[5,0,2,2,2],"span":[44,12,13]},{"path":[5,0,2,3],"span":[47,2,14],"leadingComments":" Generic, unqualified reference to Chinese.\n"},{"path":[5,0,2,3,1],"span":[47,2,9]},{"path":[5,0,2,3,2],"span":[47,12,13]},{"path":[4,0],"span":[51,0,70,1],"leadingComments":" Specifies a given language, along with a nationality for that language.\n"},{"path":[4,0,1],"span":[51,8,20]},{"path":[4,0,8,0],"span":[53,2,60,3],"leadingComments":" Specifies a language either via the enumerated specifier, or the proper two-character ISO code for the language.\n"},{"path":[4,0,8,0,1],"span":[53,8,17]},{"path":[4,0,2,0],"span":[55,4,26],"leadingComments":" Enumerated language specifier.\n"},{"path":[4,0,2,0,6],"span":[55,4,12]},{"path":[4,0,2,0,1],"span":[55,13,21]},{"path":[4,0,2,0,3],"span":[55,24,25]},{"path":[4,0,2,1],"span":[59,4,28],"leadingComments":" Two-character ISO-standard language specifier (for example: \"EN\" for English, \"FR\" for French). Casing doesn't\n matter but upper-casing should be preferred for consistency.\n"},{"path":[4,0,2,1,5],"span":[59,4,10]},{"path":[4,0,2,1,1],"span":[59,11,23]},{"path":[4,0,2,1,3],"span":[59,26,27]},{"path":[4,0,8,1],"span":[63,2,69,3],"leadingComments":" Specifies an optional modifier for a given language `selection`.\n"},{"path":[4,0,8,1,1],"span":[63,8,16]},{"path":[4,0,2,2],"span":[65,4,27],"leadingComments":" Two-character ISO-standard country code, used as a modifier for a language spec (i.e. the `us` in `en-us`).\n"},{"path":[4,0,2,2,5],"span":[65,4,10]},{"path":[4,0,2,2,1],"span":[65,11,22]},{"path":[4,0,2,2,3],"span":[65,25,26]},{"path":[4,0,2,3],"span":[68,4,23],"leadingComments":" Dialect to specify as part of this language spec, based on a simple two-character string.\n"},{"path":[4,0,2,3,5],"span":[68,4,10]},{"path":[4,0,2,3,1],"span":[68,11,18]},{"path":[4,0,2,3,3],"span":[68,21,22]}]},"syntax":"proto3","bufExtension":{"isImport":false,"isSyntaxUnspecified":false}},{"name":"elide/page/media.proto","package":"elide.page","messageType":[{"name":"MediaAsset","field":[{"name":"kind","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".elide.page.MediaType","jsonName":"kind"},{"name":"link","number":10,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.page.MediaAsset.Link","oneofIndex":0,"jsonName":"link"},{"name":"image","number":20,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.page.MediaAsset.Image","oneofIndex":0,"jsonName":"image"},{"name":"video","number":30,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.page.MediaAsset.Video","oneofIndex":0,"jsonName":"video"}],"nestedType":[{"name":"Link","field":[{"name":"uri","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"uri"},{"name":"alt","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"alt"}]},{"name":"Image","field":[{"name":"asset","number":1,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".elide.page.MediaAsset.Image.ImageAsset","jsonName":"asset"}],"nestedType":[{"name":"ImageAsset","field":[{"name":"resolution","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_FLOAT","jsonName":"resolution"},{"name":"mime","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"mime"},{"name":"width","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_UINT64","jsonName":"width"},{"name":"height","number":4,"label":"LABEL_OPTIONAL","type":"TYPE_UINT64","jsonName":"height"},{"name":"b64","number":10,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","oneofIndex":0,"jsonName":"b64"},{"name":"uri","number":20,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","oneofIndex":0,"jsonName":"uri"}],"oneofDecl":[{"name":"content"}]}]},{"name":"Video","field":[{"name":"provider","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".elide.page.VideoProvider","jsonName":"provider"},{"name":"title","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"title"},{"name":"description","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"description"},{"name":"run_time","number":4,"label":"LABEL_OPTIONAL","type":"TYPE_UINT64","jsonName":"runTime"},{"name":"asset","number":5,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".elide.page.MediaAsset.Video.VideoAsset","jsonName":"asset"}],"nestedType":[{"name":"VideoAsset","field":[{"name":"resolution","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".elide.page.VideoResolution","jsonName":"resolution"},{"name":"thumb","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.page.MediaAsset.Image","jsonName":"thumb"},{"name":"uri","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"uri"}]}]},{"name":"Document","field":[{"name":"type","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".elide.page.MediaAsset.Document.DocumentType","jsonName":"type"}],"enumType":[{"name":"DocumentType","value":[{"name":"GENERIC_DOCUMENT","number":0},{"name":"TEXT_PLAIN","number":1},{"name":"TEXT_RICH","number":2},{"name":"TEXT_MARKDOWN","number":3},{"name":"TEXT_HTML","number":4},{"name":"TEXT_CSV","number":5},{"name":"PDF","number":6},{"name":"WORD_DOC","number":7},{"name":"WORD_DOCX","number":8}]}]}],"oneofDecl":[{"name":"media"}]}],"enumType":[{"name":"VideoProvider","value":[{"name":"PRIVATE","number":0},{"name":"YOUTUBE","number":1},{"name":"VIMEO","number":2}]},{"name":"MediaType","value":[{"name":"IMAGE","number":0},{"name":"VIDEO","number":1},{"name":"AUDIO","number":2},{"name":"LINK","number":3},{"name":"DOCUMENT","number":4}]},{"name":"VideoResolution","value":[{"name":"LOW","number":0},{"name":"HD","number":1},{"name":"UHD","number":2}]}],"options":{"javaPackage":"tools.elide.page","javaOuterClassname":"WebMedia","javaMultipleFiles":true,"javaStringCheckUtf8":true,"optimizeFor":"SPEED","goPackage":"github.com/elide-tools/elide/page","ccEnableArenas":true,"objcClassPrefix":"ELD","csharpNamespace":"Elide.Page","swiftPrefix":"Elide","phpClassPrefix":"ELD"},"sourceCodeInfo":{"location":[{"span":[17,0,200,1]},{"path":[12],"span":[17,0,18],"leadingComments":"\n Structures that express and define page media assets, such as videos and images. Used by regular page context and\n also semantic metadata context.\n","leadingDetachedComments":["\n Copyright © 2022, The Elide Framework Authors. All rights reserved.\n\n The Gust/Elide framework and tools, and all associated source or object computer code, except where otherwise noted,\n are licensed under the Zero Prosperity license, which is enclosed in this repository, in the file LICENSE.txt. Use of\n this code in object or source form requires and implies consent and agreement to that license in principle and\n practice. Source or object code not listing this header, or unless specified otherwise, remain the property of\n Elide LLC and its suppliers, if any. The intellectual and technical concepts contained herein are proprietary to\n Elide LLC and its suppliers and may be covered by U.S. and Foreign Patents, or patents in process, and are protected\n by trade secret and copyright law. Dissemination of this information, or reproduction of this material, in any form,\n is strictly forbidden except in adherence with assigned license requirements.\n"]},{"path":[2],"span":[18,0,19]},{"path":[8],"span":[20,0,28]},{"path":[8,9],"span":[20,0,28]},{"path":[8],"span":[21,0,31]},{"path":[8,31],"span":[21,0,31]},{"path":[8],"span":[22,0,34]},{"path":[8,10],"span":[22,0,34]},{"path":[8],"span":[23,0,37]},{"path":[8,27],"span":[23,0,37]},{"path":[8],"span":[24,0,41]},{"path":[8,8],"span":[24,0,41]},{"path":[8],"span":[25,0,32]},{"path":[8,40],"span":[25,0,32]},{"path":[8],"span":[26,0,30]},{"path":[8,39],"span":[26,0,30]},{"path":[8],"span":[27,0,33]},{"path":[8,36],"span":[27,0,33]},{"path":[8],"span":[28,0,41]},{"path":[8,1],"span":[28,0,41]},{"path":[8],"span":[29,0,39]},{"path":[8,37],"span":[29,0,39]},{"path":[8],"span":[30,0,56]},{"path":[8,11],"span":[30,0,56]},{"path":[5,0],"span":[34,0,43,1],"leadingComments":" Enumerates known or supported video asset providers.\n"},{"path":[5,0,1],"span":[34,5,18]},{"path":[5,0,2,0],"span":[36,2,14],"leadingComments":" Private hosting for a given video asset.\n"},{"path":[5,0,2,0,1],"span":[36,2,9]},{"path":[5,0,2,0,2],"span":[36,12,13]},{"path":[5,0,2,1],"span":[39,2,14],"leadingComments":" YouTube hosting for a given video asset.\n"},{"path":[5,0,2,1,1],"span":[39,2,9]},{"path":[5,0,2,1,2],"span":[39,12,13]},{"path":[5,0,2,2],"span":[42,2,12],"leadingComments":" Vimeo hosting for a given video asset.\n"},{"path":[5,0,2,2,1],"span":[42,2,7]},{"path":[5,0,2,2,2],"span":[42,10,11]},{"path":[5,1],"span":[47,0,62,1],"leadingComments":" Defines broad types of media that may be expressed.\n"},{"path":[5,1,1],"span":[47,5,14]},{"path":[5,1,2,0],"span":[49,2,12],"leadingComments":" This media is an image asset of some kind.\n"},{"path":[5,1,2,0,1],"span":[49,2,7]},{"path":[5,1,2,0,2],"span":[49,10,11]},{"path":[5,1,2,1],"span":[52,2,12],"leadingComments":" This media is a video asset of some kind.\n"},{"path":[5,1,2,1,1],"span":[52,2,7]},{"path":[5,1,2,1,2],"span":[52,10,11]},{"path":[5,1,2,2],"span":[55,2,12],"leadingComments":" This media is an audio asset of some kind.\n"},{"path":[5,1,2,2,1],"span":[55,2,7]},{"path":[5,1,2,2,2],"span":[55,10,11]},{"path":[5,1,2,3],"span":[58,2,11],"leadingComments":" The media is a link to another asset or page of some kind.\n"},{"path":[5,1,2,3,1],"span":[58,2,6]},{"path":[5,1,2,3,2],"span":[58,9,10]},{"path":[5,1,2,4],"span":[61,2,15],"leadingComments":" The media is an arbitrary kind of digital document.\n"},{"path":[5,1,2,4,1],"span":[61,2,10]},{"path":[5,1,2,4,2],"span":[61,13,14]},{"path":[5,2],"span":[66,0,75,1],"leadingComments":" Describes resolutions at which video assets may be made available.\n"},{"path":[5,2,1],"span":[66,5,20]},{"path":[5,2,2,0],"span":[68,2,10],"leadingComments":" The video is available in low-res form.\n"},{"path":[5,2,2,0,1],"span":[68,2,5]},{"path":[5,2,2,0,2],"span":[68,8,9]},{"path":[5,2,2,1],"span":[71,2,9],"leadingComments":" The video is available in HD (720p/720i-1080p/1080i) form.\n"},{"path":[5,2,2,1,1],"span":[71,2,4]},{"path":[5,2,2,1,2],"span":[71,7,8]},{"path":[5,2,2,2],"span":[74,2,10],"leadingComments":" The video is available in 4K Ultra HD (UHD).\n"},{"path":[5,2,2,2,1],"span":[74,2,5]},{"path":[5,2,2,2,2],"span":[74,8,9]},{"path":[4,0],"span":[80,0,200,1],"leadingComments":" Defines the structure of attached content media, which is intended for emission in a given web page\n via some sort of render process, depending on the context in which this media is used.\n"},{"path":[4,0,1],"span":[80,8,18]},{"path":[4,0,3,0],"span":[82,2,88,3],"leadingComments":" Describes concrete information about a media link, attached to some web page or data point.\n"},{"path":[4,0,3,0,1],"span":[82,10,14]},{"path":[4,0,3,0,2,0],"span":[84,4,19],"leadingComments":" URI to consider for an attached media link.\n"},{"path":[4,0,3,0,2,0,5],"span":[84,4,10]},{"path":[4,0,3,0,2,0,1],"span":[84,11,14]},{"path":[4,0,3,0,2,0,3],"span":[84,17,18]},{"path":[4,0,3,0,2,1],"span":[87,4,19],"leadingComments":" Alternative text to display for this link, if applicable.\n"},{"path":[4,0,3,0,2,1,5],"span":[87,4,10]},{"path":[4,0,3,0,2,1,1],"span":[87,11,14]},{"path":[4,0,3,0,2,1,3],"span":[87,17,18]},{"path":[4,0,3,1],"span":[91,2,118,3],"leadingComments":" Describes concrete information about an image asset, attached to some web page or data point.\n"},{"path":[4,0,3,1,1],"span":[91,10,15]},{"path":[4,0,3,1,3,0],"span":[93,4,114,5],"leadingComments":" Describes information about an individual image asset, which is part of an attached image.\n"},{"path":[4,0,3,1,3,0,1],"span":[93,12,22]},{"path":[4,0,3,1,3,0,2,0],"span":[95,6,27],"leadingComments":" Specifies the intended resolution of this image asset.\n"},{"path":[4,0,3,1,3,0,2,0,5],"span":[95,6,11]},{"path":[4,0,3,1,3,0,2,0,1],"span":[95,12,22]},{"path":[4,0,3,1,3,0,2,0,3],"span":[95,25,26]},{"path":[4,0,3,1,3,0,2,1],"span":[98,6,22],"leadingComments":" Specifies the kind of image attached as this asset.\n"},{"path":[4,0,3,1,3,0,2,1,5],"span":[98,6,12]},{"path":[4,0,3,1,3,0,2,1,1],"span":[98,13,17]},{"path":[4,0,3,1,3,0,2,1,3],"span":[98,20,21]},{"path":[4,0,3,1,3,0,2,2],"span":[101,6,23],"leadingComments":" Specifies the native width of this image asset.\n"},{"path":[4,0,3,1,3,0,2,2,5],"span":[101,6,12]},{"path":[4,0,3,1,3,0,2,2,1],"span":[101,13,18]},{"path":[4,0,3,1,3,0,2,2,3],"span":[101,21,22]},{"path":[4,0,3,1,3,0,2,3],"span":[104,6,24],"leadingComments":" Specifies the native height of this image asset.\n"},{"path":[4,0,3,1,3,0,2,3,5],"span":[104,6,12]},{"path":[4,0,3,1,3,0,2,3,1],"span":[104,13,19]},{"path":[4,0,3,1,3,0,2,3,3],"span":[104,22,23]},{"path":[4,0,3,1,3,0,8,0],"span":[107,6,113,7],"leadingComments":" Specifies the content, or content by reference, for this image.\n"},{"path":[4,0,3,1,3,0,8,0,1],"span":[107,12,19]},{"path":[4,0,3,1,3,0,2,4],"span":[109,8,24],"leadingComments":" Raw Base64 content to be embedded directly in an image tag.\n"},{"path":[4,0,3,1,3,0,2,4,5],"span":[109,8,14]},{"path":[4,0,3,1,3,0,2,4,1],"span":[109,15,18]},{"path":[4,0,3,1,3,0,2,4,3],"span":[109,21,23]},{"path":[4,0,3,1,3,0,2,5],"span":[112,8,24],"leadingComments":" URI to be used in reference to this image asset.\n"},{"path":[4,0,3,1,3,0,2,5,5],"span":[112,8,14]},{"path":[4,0,3,1,3,0,2,5,1],"span":[112,15,18]},{"path":[4,0,3,1,3,0,2,5,3],"span":[112,21,23]},{"path":[4,0,3,1,2,0],"span":[117,4,34],"leadingComments":" Concrete information regarding this image asset.\n"},{"path":[4,0,3,1,2,0,4],"span":[117,4,12]},{"path":[4,0,3,1,2,0,6],"span":[117,13,23]},{"path":[4,0,3,1,2,0,1],"span":[117,24,29]},{"path":[4,0,3,1,2,0,3],"span":[117,32,33]},{"path":[4,0,3,2],"span":[121,2,148,3],"leadingComments":" Describes concrete information about a video asset, attached to some web page or data point.\n"},{"path":[4,0,3,2,1],"span":[121,10,15]},{"path":[4,0,3,2,3,0],"span":[123,4,132,5],"leadingComments":" Describes information about an individual video asset, which is part of an attached video.\n"},{"path":[4,0,3,2,3,0,1],"span":[123,12,22]},{"path":[4,0,3,2,3,0,2,0],"span":[125,6,37],"leadingComments":" Resolutions at which a video might be available.\n"},{"path":[4,0,3,2,3,0,2,0,6],"span":[125,6,21]},{"path":[4,0,3,2,3,0,2,0,1],"span":[125,22,32]},{"path":[4,0,3,2,3,0,2,0,3],"span":[125,35,36]},{"path":[4,0,3,2,3,0,2,1],"span":[128,6,22],"leadingComments":" Image asset to be used as a thumbnail for this video asset.\n"},{"path":[4,0,3,2,3,0,2,1,6],"span":[128,6,11]},{"path":[4,0,3,2,3,0,2,1,1],"span":[128,12,17]},{"path":[4,0,3,2,3,0,2,1,3],"span":[128,20,21]},{"path":[4,0,3,2,3,0,2,2],"span":[131,6,21],"leadingComments":" URI where the video may be streamed or accessed.\n"},{"path":[4,0,3,2,3,0,2,2,5],"span":[131,6,12]},{"path":[4,0,3,2,3,0,2,2,1],"span":[131,13,16]},{"path":[4,0,3,2,3,0,2,2,3],"span":[131,19,20]},{"path":[4,0,3,2,2,0],"span":[135,4,31],"leadingComments":" Describes where the video may be streamed from, or accessed.\n"},{"path":[4,0,3,2,2,0,6],"span":[135,4,17]},{"path":[4,0,3,2,2,0,1],"span":[135,18,26]},{"path":[4,0,3,2,2,0,3],"span":[135,29,30]},{"path":[4,0,3,2,2,1],"span":[138,4,21],"leadingComments":" Title to display for this video asset.\n"},{"path":[4,0,3,2,2,1,5],"span":[138,4,10]},{"path":[4,0,3,2,2,1,1],"span":[138,11,16]},{"path":[4,0,3,2,2,1,3],"span":[138,19,20]},{"path":[4,0,3,2,2,2],"span":[141,4,27],"leadingComments":" Description for this video asset.\n"},{"path":[4,0,3,2,2,2,5],"span":[141,4,10]},{"path":[4,0,3,2,2,2,1],"span":[141,11,22]},{"path":[4,0,3,2,2,2,3],"span":[141,25,26]},{"path":[4,0,3,2,2,3],"span":[144,4,24],"leadingComments":" Duration of the video asset, in milliseconds.\n"},{"path":[4,0,3,2,2,3,5],"span":[144,4,10]},{"path":[4,0,3,2,2,3,1],"span":[144,11,19]},{"path":[4,0,3,2,2,3,3],"span":[144,22,23]},{"path":[4,0,3,2,2,4],"span":[147,4,34],"leadingComments":" Describes the assets that back this video media.\n"},{"path":[4,0,3,2,2,4,4],"span":[147,4,12]},{"path":[4,0,3,2,2,4,6],"span":[147,13,23]},{"path":[4,0,3,2,2,4,1],"span":[147,24,29]},{"path":[4,0,3,2,2,4,3],"span":[147,32,33]},{"path":[4,0,3,3],"span":[151,2,184,3],"leadingComments":" Specifies information about a digital document of some kind, that is being referenced as an asset.\n"},{"path":[4,0,3,3,1],"span":[151,10,18]},{"path":[4,0,3,3,4,0],"span":[153,4,180,5],"leadingComments":" Enumerates common types of digital documents.\n"},{"path":[4,0,3,3,4,0,1],"span":[153,9,21]},{"path":[4,0,3,3,4,0,2,0],"span":[155,6,27],"leadingComments":" Default: generic document type.\n"},{"path":[4,0,3,3,4,0,2,0,1],"span":[155,6,22]},{"path":[4,0,3,3,4,0,2,0,2],"span":[155,25,26]},{"path":[4,0,3,3,4,0,2,1],"span":[158,6,21],"leadingComments":" Plain text document.\n"},{"path":[4,0,3,3,4,0,2,1,1],"span":[158,6,16]},{"path":[4,0,3,3,4,0,2,1,2],"span":[158,19,20]},{"path":[4,0,3,3,4,0,2,2],"span":[161,6,20],"leadingComments":" Rich text document.\n"},{"path":[4,0,3,3,4,0,2,2,1],"span":[161,6,15]},{"path":[4,0,3,3,4,0,2,2,2],"span":[161,18,19]},{"path":[4,0,3,3,4,0,2,3],"span":[164,6,24],"leadingComments":" Markdown-formatted document.\n"},{"path":[4,0,3,3,4,0,2,3,1],"span":[164,6,19]},{"path":[4,0,3,3,4,0,2,3,2],"span":[164,22,23]},{"path":[4,0,3,3,4,0,2,4],"span":[167,6,20],"leadingComments":" HTML-formatted document.\n"},{"path":[4,0,3,3,4,0,2,4,1],"span":[167,6,15]},{"path":[4,0,3,3,4,0,2,4,2],"span":[167,18,19]},{"path":[4,0,3,3,4,0,2,5],"span":[170,6,19],"leadingComments":" Comma Separated Values in text format.\n"},{"path":[4,0,3,3,4,0,2,5,1],"span":[170,6,14]},{"path":[4,0,3,3,4,0,2,5,2],"span":[170,17,18]},{"path":[4,0,3,3,4,0,2,6],"span":[173,6,14],"leadingComments":" Portable Document Format.\n"},{"path":[4,0,3,3,4,0,2,6,1],"span":[173,6,9]},{"path":[4,0,3,3,4,0,2,6,2],"span":[173,12,13]},{"path":[4,0,3,3,4,0,2,7],"span":[176,6,19],"leadingComments":" Word (old format, extension `.doc`).\n"},{"path":[4,0,3,3,4,0,2,7,1],"span":[176,6,14]},{"path":[4,0,3,3,4,0,2,7,2],"span":[176,17,18]},{"path":[4,0,3,3,4,0,2,8],"span":[179,6,20],"leadingComments":" Word (new format, extension `.docx`).\n"},{"path":[4,0,3,3,4,0,2,8,1],"span":[179,6,15]},{"path":[4,0,3,3,4,0,2,8,2],"span":[179,18,19]},{"path":[4,0,3,3,2,0],"span":[183,4,26],"leadingComments":" Specifies the type of document.\n"},{"path":[4,0,3,3,2,0,6],"span":[183,4,16]},{"path":[4,0,3,3,2,0,1],"span":[183,17,21]},{"path":[4,0,3,3,2,0,3],"span":[183,24,25]},{"path":[4,0,2,0],"span":[187,2,21],"leadingComments":" Describes, in broad terms, the kind of media being attached.\n"},{"path":[4,0,2,0,6],"span":[187,2,11]},{"path":[4,0,2,0,1],"span":[187,12,16]},{"path":[4,0,2,0,3],"span":[187,19,20]},{"path":[4,0,8,0],"span":[190,2,199,3],"leadingComments":" Specifies concrete information about the attached media asset.\n"},{"path":[4,0,8,0,1],"span":[190,8,13]},{"path":[4,0,2,1],"span":[192,4,19],"leadingComments":" Describes concrete information about an attached media link.\n"},{"path":[4,0,2,1,6],"span":[192,4,8]},{"path":[4,0,2,1,1],"span":[192,9,13]},{"path":[4,0,2,1,3],"span":[192,16,18]},{"path":[4,0,2,2],"span":[195,4,21],"leadingComments":" Describes concrete information about an attached image.\n"},{"path":[4,0,2,2,6],"span":[195,4,9]},{"path":[4,0,2,2,1],"span":[195,10,15]},{"path":[4,0,2,2,3],"span":[195,18,20]},{"path":[4,0,2,3],"span":[198,4,21],"leadingComments":" Describes concrete information about an attached video.\n"},{"path":[4,0,2,3,6],"span":[198,4,9]},{"path":[4,0,2,3,1],"span":[198,10,15]},{"path":[4,0,2,3,3],"span":[198,18,20]}]},"syntax":"proto3","bufExtension":{"isImport":false,"isSyntaxUnspecified":false}},{"name":"elide/page/semantic.proto","package":"elide.page","dependency":["elide/page/media.proto"],"messageType":[{"name":"SemanticMetadata","field":[{"name":"kind","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".elide.page.Kind","jsonName":"kind"},{"name":"format","number":2,"label":"LABEL_REPEATED","type":"TYPE_ENUM","typeName":".elide.page.Format","jsonName":"format"},{"name":"media","number":3,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".elide.page.MediaAsset","jsonName":"media"},{"name":"content","number":4,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","oneofIndex":0,"jsonName":"content"}],"oneofDecl":[{"name":"payload"}]}],"enumType":[{"name":"Kind","value":[{"name":"WEB_PAGE","number":0},{"name":"MASTER","number":1},{"name":"DETAIL","number":2}]},{"name":"Format","value":[{"name":"GENERIC","number":0},{"name":"OPENGRAPH","number":1},{"name":"JSON_LD","number":2}]}],"options":{"javaPackage":"tools.elide.page","javaOuterClassname":"WebSemantics","javaMultipleFiles":true,"javaStringCheckUtf8":true,"optimizeFor":"SPEED","goPackage":"github.com/elide-tools/elide/page","ccEnableArenas":true,"objcClassPrefix":"ELD","csharpNamespace":"Elide.Page","swiftPrefix":"Elide","phpClassPrefix":"ELD"},"sourceCodeInfo":{"location":[{"span":[17,0,80,1]},{"path":[12],"span":[17,0,18],"leadingComments":"\n Defines models related to semantic page metadata, which define such structure as the type/role of the page itself,\n the organization it belongs to, and so on.\n","leadingDetachedComments":["\n Copyright © 2022, The Elide Framework Authors. All rights reserved.\n\n The Gust/Elide framework and tools, and all associated source or object computer code, except where otherwise noted,\n are licensed under the Zero Prosperity license, which is enclosed in this repository, in the file LICENSE.txt. Use of\n this code in object or source form requires and implies consent and agreement to that license in principle and\n practice. Source or object code not listing this header, or unless specified otherwise, remain the property of\n Elide LLC and its suppliers, if any. The intellectual and technical concepts contained herein are proprietary to\n Elide LLC and its suppliers and may be covered by U.S. and Foreign Patents, or patents in process, and are protected\n by trade secret and copyright law. Dissemination of this information, or reproduction of this material, in any form,\n is strictly forbidden except in adherence with assigned license requirements.\n"]},{"path":[2],"span":[18,0,19]},{"path":[8],"span":[20,0,28]},{"path":[8,9],"span":[20,0,28]},{"path":[8],"span":[21,0,31]},{"path":[8,31],"span":[21,0,31]},{"path":[8],"span":[22,0,34]},{"path":[8,10],"span":[22,0,34]},{"path":[8],"span":[23,0,37]},{"path":[8,27],"span":[23,0,37]},{"path":[8],"span":[24,0,45]},{"path":[8,8],"span":[24,0,45]},{"path":[8],"span":[25,0,32]},{"path":[8,40],"span":[25,0,32]},{"path":[8],"span":[26,0,30]},{"path":[8,39],"span":[26,0,30]},{"path":[8],"span":[27,0,33]},{"path":[8,36],"span":[27,0,33]},{"path":[8],"span":[28,0,41]},{"path":[8,1],"span":[28,0,41]},{"path":[8],"span":[29,0,39]},{"path":[8,37],"span":[29,0,39]},{"path":[8],"span":[30,0,56]},{"path":[8,11],"span":[30,0,56]},{"path":[3,0],"span":[32,0,32]},{"path":[5,0],"span":[37,0,48,1],"leadingComments":" Enumerates known semantic types, which are further mapped to their implementation types in each\n semantic expression framework by implementing code.\n"},{"path":[5,0,1],"span":[37,5,9]},{"path":[5,0,2,0],"span":[39,2,15],"leadingComments":" Default content kind: generic web page or web application.\n"},{"path":[5,0,2,0,1],"span":[39,2,10]},{"path":[5,0,2,0,2],"span":[39,13,14]},{"path":[5,0,2,1],"span":[43,2,13],"leadingComments":" Master products view: listing of multiple products. Produces impression events in analytics\n for each section or product displayed to the user.\n"},{"path":[5,0,2,1,1],"span":[43,2,8]},{"path":[5,0,2,1,2],"span":[43,11,12]},{"path":[5,0,2,2],"span":[47,2,13],"leadingComments":" Detail product view: information about a single product or product group. Produces view events\n in analytics for each product or product group displayed to the user.\n"},{"path":[5,0,2,2,1],"span":[47,2,8]},{"path":[5,0,2,2,2],"span":[47,11,12]},{"path":[5,1],"span":[52,0,61,1],"leadingComments":" Enumerates semantic metadata formats that are supported for rendering into the page.\n"},{"path":[5,1,1],"span":[52,5,11]},{"path":[5,1,2,0],"span":[54,2,14],"leadingComments":" Specifies generic metadata tags as a metadata format.\n"},{"path":[5,1,2,0,1],"span":[54,2,9]},{"path":[5,1,2,0,2],"span":[54,12,13]},{"path":[5,1,2,1],"span":[57,2,16],"leadingComments":" Specifies OpenGraph tags as a metadata format.\n"},{"path":[5,1,2,1,1],"span":[57,2,11]},{"path":[5,1,2,1,2],"span":[57,14,15]},{"path":[5,1,2,2],"span":[60,2,14],"leadingComments":" Specifies JSON-LD as a metadata format.\n"},{"path":[5,1,2,2,1],"span":[60,2,9]},{"path":[5,1,2,2,2],"span":[60,12,13]},{"path":[4,0],"span":[65,0,80,1],"leadingComments":" Defines the structure of top-level metadata with regard to semantic content, attached to a given\n web page for emission in meta tags in various formats.\n"},{"path":[4,0,1],"span":[65,8,24]},{"path":[4,0,2,0],"span":[67,2,16],"leadingComments":" Defines the \"kind\" of content contained on a given page.\n"},{"path":[4,0,2,0,6],"span":[67,2,6]},{"path":[4,0,2,0,1],"span":[67,7,11]},{"path":[4,0,2,0,3],"span":[67,14,15]},{"path":[4,0,2,1],"span":[70,2,29],"leadingComments":" Formats to render semantic metadata in.\n"},{"path":[4,0,2,1,4],"span":[70,2,10]},{"path":[4,0,2,1,6],"span":[70,11,17]},{"path":[4,0,2,1,1],"span":[70,18,24]},{"path":[4,0,2,1,3],"span":[70,27,28]},{"path":[4,0,2,2],"span":[73,2,32],"leadingComments":" Describes page-level semantic media.\n"},{"path":[4,0,2,2,4],"span":[73,2,10]},{"path":[4,0,2,2,6],"span":[73,11,21]},{"path":[4,0,2,2,1],"span":[73,22,27]},{"path":[4,0,2,2,3],"span":[73,30,31]},{"path":[4,0,8,0],"span":[76,2,79,3],"leadingComments":" Payloads describing the semantic metadata attached.\n"},{"path":[4,0,8,0,1],"span":[76,8,15]},{"path":[4,0,2,3],"span":[78,4,23],"leadingComments":" Semantic metadata content.\n"},{"path":[4,0,2,3,5],"span":[78,4,10]},{"path":[4,0,2,3,1],"span":[78,11,18]},{"path":[4,0,2,3,3],"span":[78,21,22]}]},"syntax":"proto3","bufExtension":{"isImport":false,"isSyntaxUnspecified":false}},{"name":"elide/page/page.proto","package":"elide.page","dependency":["google/protobuf/duration.proto","google/protobuf/timestamp.proto","webutil/html/types/html.proto","elide/data/data.proto","elide/base/language.proto","elide/page/semantic.proto"],"messageType":[{"name":"Context","field":[{"name":"meta","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.page.Context.Metadata","jsonName":"meta"},{"name":"styles","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.page.Context.Styles","jsonName":"styles"},{"name":"fonts","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.page.Context.Fonts","jsonName":"fonts"},{"name":"scripts","number":4,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.page.Context.Scripts","jsonName":"scripts"},{"name":"manifest","number":5,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.page.Context.AppManifest","jsonName":"manifest"},{"name":"etag","number":6,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.page.Context.DynamicETag","jsonName":"etag"},{"name":"cookie","number":8,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".elide.page.Context.Cookie","jsonName":"cookie"},{"name":"header","number":9,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".elide.page.Context.ResponseHeader","jsonName":"header"},{"name":"vary","number":10,"label":"LABEL_REPEATED","type":"TYPE_STRING","jsonName":"vary"},{"name":"language","number":11,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"language"},{"name":"hints","number":12,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.page.Context.ClientHints","jsonName":"hints"},{"name":"feature_policy","number":13,"label":"LABEL_REPEATED","type":"TYPE_STRING","jsonName":"featurePolicy"},{"name":"framing_policy","number":15,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".elide.page.Context.FramingPolicy","jsonName":"framingPolicy"},{"name":"content_type_nosniff","number":16,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"contentTypeNosniff"},{"name":"cdn_prefix","number":17,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".webutil.html.types.TrustedResourceUrlProto","jsonName":"cdnPrefix"},{"name":"dns_prefetch","number":18,"label":"LABEL_REPEATED","type":"TYPE_STRING","jsonName":"dnsPrefetch"},{"name":"preconnect","number":19,"label":"LABEL_REPEATED","type":"TYPE_STRING","jsonName":"preconnect"},{"name":"xss_protection","number":20,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"xssProtection"},{"name":"referrer_policy","number":21,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".elide.page.Context.ReferrerPolicy","jsonName":"referrerPolicy"}],"nestedType":[{"name":"Metadata","field":[{"name":"title","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"title"},{"name":"description","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"description"},{"name":"keyword","number":3,"label":"LABEL_REPEATED","type":"TYPE_STRING","jsonName":"keyword"},{"name":"semantic","number":4,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.page.SemanticMetadata","jsonName":"semantic"},{"name":"viewport","number":5,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"viewport"},{"name":"manifest","number":6,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".webutil.html.types.TrustedResourceUrlProto","jsonName":"manifest"},{"name":"theme","number":7,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"theme"},{"name":"touch_icon","number":8,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"touchIcon"},{"name":"startup_image","number":9,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"startupImage"},{"name":"link","number":10,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".elide.page.Context.PageLink","jsonName":"link"},{"name":"language","number":11,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.base.LanguageSpec","jsonName":"language"},{"name":"gtm_id","number":12,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"gtmId"},{"name":"fb_app_id","number":13,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"fbAppId"},{"name":"open_graph","number":14,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.page.Context.Metadata.OpenGraph","jsonName":"openGraph"},{"name":"robots","number":15,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"robots"},{"name":"color_scheme","number":16,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"colorScheme"},{"name":"prefix","number":17,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".elide.page.Context.RDFPrefix","jsonName":"prefix"},{"name":"googlebot","number":18,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"googlebot"},{"name":"rating","number":19,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"rating"},{"name":"delegate_package","number":20,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"delegatePackage"}],"nestedType":[{"name":"OpenGraph","field":[{"name":"site_name","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"siteName"},{"name":"title","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"title"},{"name":"description","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"description"},{"name":"locale","number":4,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.base.LanguageSpec","jsonName":"locale"},{"name":"type","number":5,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"type"},{"name":"url","number":6,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"url"},{"name":"twitter","number":8,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.page.Context.Metadata.Twitter","jsonName":"twitter"},{"name":"canonical","number":12,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"canonical"},{"name":"fb_app","number":13,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"fbApp"},{"name":"image","number":14,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".elide.page.Context.Metadata.OpenGraph.OpenGraphImage","jsonName":"image"},{"name":"video","number":15,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".elide.page.Context.Metadata.OpenGraph.OpenGraphVideo","jsonName":"video"}],"nestedType":[{"name":"OpenGraphImage","field":[{"name":"uri","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"uri"},{"name":"width","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_UINT32","jsonName":"width"},{"name":"height","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_UINT32","jsonName":"height"},{"name":"type","number":4,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"type"}]},{"name":"OpenGraphVideo","field":[{"name":"uri","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"uri"},{"name":"width","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_UINT32","jsonName":"width"},{"name":"height","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_UINT32","jsonName":"height"},{"name":"type","number":4,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"type"}]}]},{"name":"Twitter","field":[{"name":"site_name","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"siteName"},{"name":"title","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"title"},{"name":"description","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"description"},{"name":"locale","number":4,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.base.LanguageSpec","jsonName":"locale"},{"name":"card","number":5,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"card"},{"name":"image","number":6,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"image"},{"name":"url","number":7,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"url"},{"name":"creator","number":8,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"creator"}]}]},{"name":"PageLink","field":[{"name":"relevance","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"relevance"},{"name":"type","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"type"},{"name":"href","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".webutil.html.types.TrustedResourceUrlProto","jsonName":"href"}]},{"name":"AppManifest","field":[{"name":"name","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"name"},{"name":"short_name","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"shortName"},{"name":"start_url","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"startUrl"},{"name":"display","number":4,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".elide.page.Context.AppManifest.DisplayMode","jsonName":"display"},{"name":"background_color","number":5,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"backgroundColor"},{"name":"description","number":6,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"description"},{"name":"direction","number":7,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"direction"},{"name":"language","number":8,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.base.LanguageSpec","jsonName":"language"},{"name":"orientation","number":9,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".elide.page.Context.AppManifest.OrientationMode","jsonName":"orientation"},{"name":"scope","number":11,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"scope"},{"name":"prefer_related_applications","number":12,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"preferRelatedApplications"},{"name":"related_application","number":13,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".elide.page.Context.AppManifest.RelatedApplication","jsonName":"relatedApplication"},{"name":"app_icon","number":14,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".elide.page.Context.AppManifest.Icon","jsonName":"appIcon"}],"nestedType":[{"name":"Icon","field":[{"name":"src","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".webutil.html.types.TrustedResourceUrlProto","jsonName":"src"},{"name":"size","number":2,"label":"LABEL_REPEATED","type":"TYPE_UINT32","jsonName":"size"},{"name":"mime_type","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"mimeType"}]},{"name":"RelatedApplication","field":[{"name":"id","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"id"},{"name":"platform","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".elide.page.Context.AppManifest.RelatedApplication.AppPlatform","jsonName":"platform"},{"name":"uri","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".webutil.html.types.TrustedResourceUrlProto","jsonName":"uri"}],"enumType":[{"name":"AppPlatform","value":[{"name":"UNSPECIFIED_APP_PLATFORM","number":0},{"name":"APPSTORE","number":1},{"name":"PLAYSTORE","number":2},{"name":"WEB","number":3}]}]}],"enumType":[{"name":"DisplayMode","value":[{"name":"BROWSER","number":0},{"name":"FULLSCREEN","number":1},{"name":"STANDALONE","number":2},{"name":"MINIMAL_UI","number":3}]},{"name":"OrientationMode","value":[{"name":"UNSPECIFIED_ORIENTATION","number":0},{"name":"ANY","number":1},{"name":"NATURAL","number":2},{"name":"LANDSCAPE","number":3},{"name":"PORTRAIT","number":4}]}]},{"name":"Styles","field":[{"name":"lifted","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".webutil.html.types.SafeStyleProto","jsonName":"lifted"},{"name":"link","number":2,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".elide.page.Context.Styles.Stylesheet","jsonName":"link"}],"nestedType":[{"name":"Stylesheet","field":[{"name":"uri","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".webutil.html.types.TrustedResourceUrlProto","jsonName":"uri"},{"name":"id","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"id"},{"name":"media","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"media"},{"name":"prefetch","number":7,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"prefetch"},{"name":"preload","number":8,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"preload"},{"name":"push","number":9,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"push"}]}]},{"name":"Fonts","field":[{"name":"package","number":1,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".elide.page.Context.Fonts.FontPackage","jsonName":"package"}],"nestedType":[{"name":"FontReference","field":[{"name":"type","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".elide.page.Context.Fonts.FontReferenceType","jsonName":"type"},{"name":"format","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".elide.page.Context.Fonts.FontFormat","jsonName":"format"},{"name":"name","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"name"},{"name":"weight","number":4,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"weight"},{"name":"variant","number":5,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"variant"},{"name":"uri","number":6,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".webutil.html.types.TrustedResourceUrlProto","jsonName":"uri"},{"name":"prefetch","number":7,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"prefetch"},{"name":"preload","number":8,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"preload"},{"name":"push","number":9,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"push"}]},{"name":"FontPackage","field":[{"name":"name","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"name"},{"name":"reference","number":2,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".elide.page.Context.Fonts.FontReference","jsonName":"reference"}]}],"enumType":[{"name":"FontReferenceType","value":[{"name":"INTERNAL","number":0},{"name":"GOOGLE_FONTS","number":1}]},{"name":"FontFormat","value":[{"name":"UNSPECIFIED_FORMAT","number":0},{"name":"OPENTYPE","number":1},{"name":"TRUETYPE","number":2},{"name":"VECTOR","number":3},{"name":"WEBFONT","number":4},{"name":"WEBFONT2","number":5},{"name":"EMBEDDED_OPENTYPE","number":6}]}]},{"name":"Scripts","field":[{"name":"lifted","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".webutil.html.types.SafeScriptProto","jsonName":"lifted"},{"name":"link","number":2,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".elide.page.Context.Scripts.JavaScript","jsonName":"link"}],"nestedType":[{"name":"JavaScript","field":[{"name":"uri","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".webutil.html.types.TrustedResourceUrlProto","jsonName":"uri"},{"name":"id","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"id"},{"name":"defer","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"defer"},{"name":"async","number":4,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"async"},{"name":"module","number":5,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"module"},{"name":"no_module","number":6,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"noModule"},{"name":"prefetch","number":7,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"prefetch"},{"name":"preload","number":8,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"preload"},{"name":"push","number":9,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"push"}]}]},{"name":"DynamicETag","field":[{"name":"enabled","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"enabled"},{"name":"strong","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"strong"},{"name":"preimage","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.data.DataFingerprint","jsonName":"preimage"},{"name":"response","number":4,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.data.DataFingerprint","jsonName":"response"}]},{"name":"RDFPrefix","field":[{"name":"prefix","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"prefix"},{"name":"target","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"target"}]},{"name":"Cookie","field":[{"name":"name","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"name"},{"name":"value","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"value"},{"name":"domain","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"domain"},{"name":"path","number":4,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"path"},{"name":"immediate_expire","number":5,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","oneofIndex":0,"jsonName":"immediateExpire"},{"name":"absolute_expire","number":6,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".google.protobuf.Timestamp","oneofIndex":0,"jsonName":"absoluteExpire"},{"name":"relative_expire","number":7,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".google.protobuf.Duration","oneofIndex":0,"jsonName":"relativeExpire"},{"name":"no_expire","number":8,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","oneofIndex":0,"jsonName":"noExpire"},{"name":"http_only","number":9,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"httpOnly"},{"name":"secure","number":10,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"secure"},{"name":"same_site","number":11,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".elide.page.Context.Cookie.SameSitePolicy","jsonName":"sameSite"}],"enumType":[{"name":"SameSitePolicy","value":[{"name":"NO_SAME_SITE_POLICY","number":0},{"name":"LAX","number":1},{"name":"STRICT","number":2}]}],"oneofDecl":[{"name":"expiration_strategy"}]},{"name":"ClientHints","field":[{"name":"supported","number":1,"label":"LABEL_REPEATED","type":"TYPE_ENUM","typeName":".elide.page.Context.ClientHint","jsonName":"supported"},{"name":"indicated","number":2,"label":"LABEL_REPEATED","type":"TYPE_ENUM","typeName":".elide.page.Context.ClientHint","jsonName":"indicated"},{"name":"lifetime","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_UINT64","jsonName":"lifetime"},{"name":"width","number":4,"label":"LABEL_OPTIONAL","type":"TYPE_UINT32","jsonName":"width"},{"name":"viewport_width","number":5,"label":"LABEL_OPTIONAL","type":"TYPE_UINT32","jsonName":"viewportWidth"},{"name":"device_pixel_ratio","number":6,"label":"LABEL_OPTIONAL","type":"TYPE_UINT32","jsonName":"devicePixelRatio"},{"name":"round_trip_time","number":7,"label":"LABEL_OPTIONAL","type":"TYPE_UINT32","jsonName":"roundTripTime"},{"name":"downlink","number":8,"label":"LABEL_OPTIONAL","type":"TYPE_FLOAT","jsonName":"downlink"},{"name":"effective_connection_type","number":9,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".elide.page.Context.ConnectionHint","jsonName":"effectiveConnectionType"},{"name":"save_data","number":10,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"saveData"},{"name":"device_memory","number":11,"label":"LABEL_OPTIONAL","type":"TYPE_FLOAT","jsonName":"deviceMemory"}]},{"name":"ResponseHeader","field":[{"name":"name","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"name"},{"name":"value","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"value"},{"name":"force","number":4,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"force"}]}],"enumType":[{"name":"ClientHint","value":[{"name":"UNKNOWN_CLIENT_HINT","number":0},{"name":"DPR","number":1},{"name":"ECT","number":2},{"name":"RTT","number":3},{"name":"DOWNLINK","number":4},{"name":"DEVICE_MEMORY","number":5},{"name":"SAVE_DATA","number":6},{"name":"WIDTH","number":7},{"name":"VIEWPORT_WIDTH","number":8}]},{"name":"ConnectionHint","value":[{"name":"UNKNOWN_CONNECTION_HINT","number":0},{"name":"SLOW_TWO","number":1},{"name":"SLOW","number":2},{"name":"TYPICAL","number":3},{"name":"FAST","number":4}]},{"name":"CrossOriginResourcePolicy","value":[{"name":"DEFAULT_CROSS_ORIGIN_RESOURCE_POLICY","number":0},{"name":"SAME_SITE","number":1},{"name":"SAME_ORIGIN","number":2},{"name":"CROSS_ORIGIN","number":3}]},{"name":"FramingPolicy","value":[{"name":"DEFAULT_FRAMING_POLICY","number":0},{"name":"SAMEORIGIN","number":1},{"name":"DENY","number":2}]},{"name":"ReferrerPolicy","value":[{"name":"DEFAULT_REFERRER_POLICY","number":0},{"name":"NO_REFERRER","number":1},{"name":"NO_REFERRER_WHEN_DOWNGRADE","number":2},{"name":"ORIGIN","number":3},{"name":"ORIGIN_WHEN_CROSS_ORIGIN","number":4},{"name":"SAME","number":5},{"name":"STRICT_ORIGIN","number":7},{"name":"STRICT_ORIGIN_WHEN_CROSS_ORIGIN","number":8},{"name":"UNSAFE_URL","number":9}]}]}],"options":{"javaPackage":"tools.elide.page","javaOuterClassname":"WebContext","javaMultipleFiles":true,"javaStringCheckUtf8":true,"optimizeFor":"SPEED","goPackage":"github.com/elide-tools/elide/page","ccEnableArenas":true,"objcClassPrefix":"ELD","csharpNamespace":"Elide.Page","swiftPrefix":"Elide","phpClassPrefix":"ELD"},"sourceCodeInfo":{"location":[{"span":[17,0,796,1]},{"path":[12],"span":[17,0,18],"leadingComments":"\n Defines structures related to \"page context\" - i.e. the typed base context for rendering pages server-side. These\n structures provide definitions for the page head, scripts appended to the body, and other page metadata.\n","leadingDetachedComments":["\n Copyright © 2022, The Elide Framework Authors. All rights reserved.\n\n The Gust/Elide framework and tools, and all associated source or object computer code, except where otherwise noted,\n are licensed under the Zero Prosperity license, which is enclosed in this repository, in the file LICENSE.txt. Use of\n this code in object or source form requires and implies consent and agreement to that license in principle and\n practice. Source or object code not listing this header, or unless specified otherwise, remain the property of\n Elide LLC and its suppliers, if any. The intellectual and technical concepts contained herein are proprietary to\n Elide LLC and its suppliers and may be covered by U.S. and Foreign Patents, or patents in process, and are protected\n by trade secret and copyright law. Dissemination of this information, or reproduction of this material, in any form,\n is strictly forbidden except in adherence with assigned license requirements.\n"]},{"path":[2],"span":[18,0,19]},{"path":[8],"span":[20,0,28]},{"path":[8,9],"span":[20,0,28]},{"path":[8],"span":[21,0,31]},{"path":[8,31],"span":[21,0,31]},{"path":[8],"span":[22,0,34]},{"path":[8,10],"span":[22,0,34]},{"path":[8],"span":[23,0,37]},{"path":[8,27],"span":[23,0,37]},{"path":[8],"span":[24,0,43]},{"path":[8,8],"span":[24,0,43]},{"path":[8],"span":[25,0,32]},{"path":[8,40],"span":[25,0,32]},{"path":[8],"span":[26,0,30]},{"path":[8,39],"span":[26,0,30]},{"path":[8],"span":[27,0,33]},{"path":[8,36],"span":[27,0,33]},{"path":[8],"span":[28,0,41]},{"path":[8,1],"span":[28,0,41]},{"path":[8],"span":[29,0,39]},{"path":[8,37],"span":[29,0,39]},{"path":[8],"span":[30,0,56]},{"path":[8,11],"span":[30,0,56]},{"path":[3,0],"span":[32,0,40]},{"path":[3,1],"span":[33,0,41]},{"path":[3,2],"span":[35,0,39]},{"path":[3,3],"span":[37,0,31]},{"path":[3,4],"span":[39,0,35]},{"path":[3,5],"span":[40,0,35]},{"path":[4,0],"span":[58,0,796,1],"leadingComments":" Defines the notion of a *Render Context* for server-side pages in Gust. This protocol message is filled out with data\n as configured by the developer (from `application.yml` and the active controller, as applicable) and provided as an\n injected value to all server-side render operations.\n\n When preparing context in Gust, adding a static script or stylesheet is done through `Context`. Setting page metadata\n like the title, keywords, and manifest - also all done through `Context`. This of course has the added benefit of\n being completely serializable, repeatable, and so on (i.e. all the benefits Protobuf brings).\n\n Major context modules include:\n - *Metadata*: Page-level metadata.\n - *OpenGraph*: Properties for OG tags.\n - *Twitter*: Properties for Twitter cards.\n - *AppManifest*: Information to link or derive a web application manifest.\n - *Styles*: Stylesheets and inline head-injected styles (\"lifted styles\").\n - *Scripts*: Scripts to include, and inline head-injected logic (\"lifted JS\").\n"},{"path":[4,0,1],"span":[58,8,15]},{"path":[4,0,3,0],"span":[61,2,214,3],"leadingComments":" Defines the structure of well-known page-level metadata, including the page title, description,\n keywords, and so on.\n"},{"path":[4,0,3,0,1],"span":[61,10,18]},{"path":[4,0,3,0,3,0],"span":[63,4,126,5],"leadingComments":" Tags for the Facebook Crawler.\n"},{"path":[4,0,3,0,3,0,1],"span":[63,12,21]},{"path":[4,0,3,0,3,0,3,0],"span":[65,6,77,7],"leadingComments":" OpenGraph image asset.\n"},{"path":[4,0,3,0,3,0,3,0,1],"span":[65,14,28]},{"path":[4,0,3,0,3,0,3,0,2,0],"span":[67,8,23],"leadingComments":" Thumbnail to display when page is shared.\n"},{"path":[4,0,3,0,3,0,3,0,2,0,5],"span":[67,8,14]},{"path":[4,0,3,0,3,0,3,0,2,0,1],"span":[67,15,18]},{"path":[4,0,3,0,3,0,3,0,2,0,3],"span":[67,21,22]},{"path":[4,0,3,0,3,0,3,0,2,1],"span":[70,8,25],"leadingComments":" Width of the sharing image, if known.\n"},{"path":[4,0,3,0,3,0,3,0,2,1,5],"span":[70,8,14]},{"path":[4,0,3,0,3,0,3,0,2,1,1],"span":[70,15,20]},{"path":[4,0,3,0,3,0,3,0,2,1,3],"span":[70,23,24]},{"path":[4,0,3,0,3,0,3,0,2,2],"span":[73,8,26],"leadingComments":" Height of the sharing image, if known.\n"},{"path":[4,0,3,0,3,0,3,0,2,2,5],"span":[73,8,14]},{"path":[4,0,3,0,3,0,3,0,2,2,1],"span":[73,15,21]},{"path":[4,0,3,0,3,0,3,0,2,2,3],"span":[73,24,25]},{"path":[4,0,3,0,3,0,3,0,2,3],"span":[76,8,24],"leadingComments":" Type of image, if known.\n"},{"path":[4,0,3,0,3,0,3,0,2,3,5],"span":[76,8,14]},{"path":[4,0,3,0,3,0,3,0,2,3,1],"span":[76,15,19]},{"path":[4,0,3,0,3,0,3,0,2,3,3],"span":[76,22,23]},{"path":[4,0,3,0,3,0,3,1],"span":[80,6,92,7],"leadingComments":" OpenGraph video asset.\n"},{"path":[4,0,3,0,3,0,3,1,1],"span":[80,14,28]},{"path":[4,0,3,0,3,0,3,1,2,0],"span":[82,8,23],"leadingComments":" Reference to the page's main video, as applicable.\n"},{"path":[4,0,3,0,3,0,3,1,2,0,5],"span":[82,8,14]},{"path":[4,0,3,0,3,0,3,1,2,0,1],"span":[82,15,18]},{"path":[4,0,3,0,3,0,3,1,2,0,3],"span":[82,21,22]},{"path":[4,0,3,0,3,0,3,1,2,1],"span":[85,8,25],"leadingComments":" Width of the main video on the page.\n"},{"path":[4,0,3,0,3,0,3,1,2,1,5],"span":[85,8,14]},{"path":[4,0,3,0,3,0,3,1,2,1,1],"span":[85,15,20]},{"path":[4,0,3,0,3,0,3,1,2,1,3],"span":[85,23,24]},{"path":[4,0,3,0,3,0,3,1,2,2],"span":[88,8,26],"leadingComments":" Height of the main video on the page.\n"},{"path":[4,0,3,0,3,0,3,1,2,2,5],"span":[88,8,14]},{"path":[4,0,3,0,3,0,3,1,2,2,1],"span":[88,15,21]},{"path":[4,0,3,0,3,0,3,1,2,2,3],"span":[88,24,25]},{"path":[4,0,3,0,3,0,3,1,2,3],"span":[91,8,24],"leadingComments":" Type of video, if known.\n"},{"path":[4,0,3,0,3,0,3,1,2,3,5],"span":[91,8,14]},{"path":[4,0,3,0,3,0,3,1,2,3,1],"span":[91,15,19]},{"path":[4,0,3,0,3,0,3,1,2,3,3],"span":[91,22,23]},{"path":[4,0,3,0,3,0,2,0],"span":[95,6,27],"leadingComments":" Name of the website.\n"},{"path":[4,0,3,0,3,0,2,0,5],"span":[95,6,12]},{"path":[4,0,3,0,3,0,2,0,1],"span":[95,13,22]},{"path":[4,0,3,0,3,0,2,0,3],"span":[95,25,26]},{"path":[4,0,3,0,3,0,2,1],"span":[98,6,23],"leadingComments":" Title of the page.\n"},{"path":[4,0,3,0,3,0,2,1,5],"span":[98,6,12]},{"path":[4,0,3,0,3,0,2,1,1],"span":[98,13,18]},{"path":[4,0,3,0,3,0,2,1,3],"span":[98,21,22]},{"path":[4,0,3,0,3,0,2,2],"span":[101,6,29],"leadingComments":" Description of the page.\n"},{"path":[4,0,3,0,3,0,2,2,5],"span":[101,6,12]},{"path":[4,0,3,0,3,0,2,2,1],"span":[101,13,24]},{"path":[4,0,3,0,3,0,2,2,3],"span":[101,27,28]},{"path":[4,0,3,0,3,0,2,3],"span":[104,6,35],"leadingComments":" The language the page is written in.\n"},{"path":[4,0,3,0,3,0,2,3,6],"span":[104,6,23]},{"path":[4,0,3,0,3,0,2,3,1],"span":[104,24,30]},{"path":[4,0,3,0,3,0,2,3,3],"span":[104,33,34]},{"path":[4,0,3,0,3,0,2,4],"span":[107,6,22],"leadingComments":" The type of page - i.e. article, website, video.\n"},{"path":[4,0,3,0,3,0,2,4,5],"span":[107,6,12]},{"path":[4,0,3,0,3,0,2,4,1],"span":[107,13,17]},{"path":[4,0,3,0,3,0,2,4,3],"span":[107,20,21]},{"path":[4,0,3,0,3,0,2,5],"span":[110,6,21],"leadingComments":" Directs facebook to scrape another url instead of the url the page was served from.\n"},{"path":[4,0,3,0,3,0,2,5,5],"span":[110,6,12]},{"path":[4,0,3,0,3,0,2,5,1],"span":[110,13,16]},{"path":[4,0,3,0,3,0,2,5,3],"span":[110,19,20]},{"path":[4,0,3,0,3,0,2,6],"span":[113,6,26],"leadingComments":" Information for Twitter's crawler.\n"},{"path":[4,0,3,0,3,0,2,6,6],"span":[113,6,13]},{"path":[4,0,3,0,3,0,2,6,1],"span":[113,14,21]},{"path":[4,0,3,0,3,0,2,6,3],"span":[113,24,25]},{"path":[4,0,3,0,3,0,2,7],"span":[116,6,28],"leadingComments":" Canonical URL for this page.\n"},{"path":[4,0,3,0,3,0,2,7,5],"span":[116,6,12]},{"path":[4,0,3,0,3,0,2,7,1],"span":[116,13,22]},{"path":[4,0,3,0,3,0,2,7,3],"span":[116,25,27]},{"path":[4,0,3,0,3,0,2,8],"span":[119,6,25],"leadingComments":" FB application ID for this web application.\n"},{"path":[4,0,3,0,3,0,2,8,5],"span":[119,6,12]},{"path":[4,0,3,0,3,0,2,8,1],"span":[119,13,19]},{"path":[4,0,3,0,3,0,2,8,3],"span":[119,22,24]},{"path":[4,0,3,0,3,0,2,9],"span":[122,6,41],"leadingComments":" OpenGraph image assets.\n"},{"path":[4,0,3,0,3,0,2,9,4],"span":[122,6,14]},{"path":[4,0,3,0,3,0,2,9,6],"span":[122,15,29]},{"path":[4,0,3,0,3,0,2,9,1],"span":[122,30,35]},{"path":[4,0,3,0,3,0,2,9,3],"span":[122,38,40]},{"path":[4,0,3,0,3,0,2,10],"span":[125,6,41],"leadingComments":" OpenGraph video assets.\n"},{"path":[4,0,3,0,3,0,2,10,4],"span":[125,6,14]},{"path":[4,0,3,0,3,0,2,10,6],"span":[125,15,29]},{"path":[4,0,3,0,3,0,2,10,1],"span":[125,30,35]},{"path":[4,0,3,0,3,0,2,10,3],"span":[125,38,40]},{"path":[4,0,3,0,3,1],"span":[129,4,153,5],"leadingComments":" Tags for the Twitter Crawler.\n"},{"path":[4,0,3,0,3,1,1],"span":[129,12,19]},{"path":[4,0,3,0,3,1,2,0],"span":[131,6,27],"leadingComments":" Name of the website.\n"},{"path":[4,0,3,0,3,1,2,0,5],"span":[131,6,12]},{"path":[4,0,3,0,3,1,2,0,1],"span":[131,13,22]},{"path":[4,0,3,0,3,1,2,0,3],"span":[131,25,26]},{"path":[4,0,3,0,3,1,2,1],"span":[134,6,23],"leadingComments":" Title of the page.\n"},{"path":[4,0,3,0,3,1,2,1,5],"span":[134,6,12]},{"path":[4,0,3,0,3,1,2,1,1],"span":[134,13,18]},{"path":[4,0,3,0,3,1,2,1,3],"span":[134,21,22]},{"path":[4,0,3,0,3,1,2,2],"span":[137,6,29],"leadingComments":" Description of the page.\n"},{"path":[4,0,3,0,3,1,2,2,5],"span":[137,6,12]},{"path":[4,0,3,0,3,1,2,2,1],"span":[137,13,24]},{"path":[4,0,3,0,3,1,2,2,3],"span":[137,27,28]},{"path":[4,0,3,0,3,1,2,3],"span":[140,6,35],"leadingComments":" The language the page is written in.\n"},{"path":[4,0,3,0,3,1,2,3,6],"span":[140,6,23]},{"path":[4,0,3,0,3,1,2,3,1],"span":[140,24,30]},{"path":[4,0,3,0,3,1,2,3,3],"span":[140,33,34]},{"path":[4,0,3,0,3,1,2,4],"span":[143,6,22],"leadingComments":" The type of card to display on Twitter.\n"},{"path":[4,0,3,0,3,1,2,4,5],"span":[143,6,12]},{"path":[4,0,3,0,3,1,2,4,1],"span":[143,13,17]},{"path":[4,0,3,0,3,1,2,4,3],"span":[143,20,21]},{"path":[4,0,3,0,3,1,2,5],"span":[146,6,23],"leadingComments":" Thumbnail to display when page is shared.\n"},{"path":[4,0,3,0,3,1,2,5,5],"span":[146,6,12]},{"path":[4,0,3,0,3,1,2,5,1],"span":[146,13,18]},{"path":[4,0,3,0,3,1,2,5,3],"span":[146,21,22]},{"path":[4,0,3,0,3,1,2,6],"span":[149,6,21],"leadingComments":" Directs Twitter to scrape another url instead of the url the page was served from.\n"},{"path":[4,0,3,0,3,1,2,6,5],"span":[149,6,12]},{"path":[4,0,3,0,3,1,2,6,1],"span":[149,13,16]},{"path":[4,0,3,0,3,1,2,6,3],"span":[149,19,20]},{"path":[4,0,3,0,3,1,2,7],"span":[152,6,25],"leadingComments":" Twitter account considered the \"creator\" of this content.\n"},{"path":[4,0,3,0,3,1,2,7,5],"span":[152,6,12]},{"path":[4,0,3,0,3,1,2,7,1],"span":[152,13,20]},{"path":[4,0,3,0,3,1,2,7,3],"span":[152,23,24]},{"path":[4,0,3,0,2,0],"span":[156,4,21],"leadingComments":" Defines the HTML title for the page, emitted in the <head>.\n"},{"path":[4,0,3,0,2,0,5],"span":[156,4,10]},{"path":[4,0,3,0,2,0,1],"span":[156,11,16]},{"path":[4,0,3,0,2,0,3],"span":[156,19,20]},{"path":[4,0,3,0,2,1],"span":[159,4,27],"leadingComments":" Defines the meta description content for the page.\n"},{"path":[4,0,3,0,2,1,5],"span":[159,4,10]},{"path":[4,0,3,0,2,1,1],"span":[159,11,22]},{"path":[4,0,3,0,2,1,3],"span":[159,25,26]},{"path":[4,0,3,0,2,2],"span":[162,4,32],"leadingComments":" Defines meta tag keywords, to be included in the page.\n"},{"path":[4,0,3,0,2,2,4],"span":[162,4,12]},{"path":[4,0,3,0,2,2,5],"span":[162,13,19]},{"path":[4,0,3,0,2,2,1],"span":[162,20,27]},{"path":[4,0,3,0,2,2,3],"span":[162,30,31]},{"path":[4,0,3,0,2,3],"span":[165,4,39],"leadingComments":" Defines semantic content structure and binding content.\n"},{"path":[4,0,3,0,2,3,6],"span":[165,4,25]},{"path":[4,0,3,0,2,3,1],"span":[165,26,34]},{"path":[4,0,3,0,2,3,3],"span":[165,37,38]},{"path":[4,0,3,0,2,4],"span":[168,4,24],"leadingComments":" Defines the viewport settings that should be used by the rendered page.\n"},{"path":[4,0,3,0,2,4,5],"span":[168,4,10]},{"path":[4,0,3,0,2,4,1],"span":[168,11,19]},{"path":[4,0,3,0,2,4,3],"span":[168,22,23]},{"path":[4,0,3,0,2,5],"span":[171,4,60],"leadingComments":" Defines a link to a web application manifest, if applicable.\n"},{"path":[4,0,3,0,2,5,6],"span":[171,4,46]},{"path":[4,0,3,0,2,5,1],"span":[171,47,55]},{"path":[4,0,3,0,2,5,3],"span":[171,58,59]},{"path":[4,0,3,0,2,6],"span":[174,4,21],"leadingComments":" Defines a hex code to use as the primary theme color for the application.\n"},{"path":[4,0,3,0,2,6,5],"span":[174,4,10]},{"path":[4,0,3,0,2,6,1],"span":[174,11,16]},{"path":[4,0,3,0,2,6,3],"span":[174,19,20]},{"path":[4,0,3,0,2,7],"span":[177,4,26],"leadingComments":" Defines an icon to use in iOS circumstances, when used as an app shortcut.\n"},{"path":[4,0,3,0,2,7,5],"span":[177,4,10]},{"path":[4,0,3,0,2,7,1],"span":[177,11,21]},{"path":[4,0,3,0,2,7,3],"span":[177,24,25]},{"path":[4,0,3,0,2,8],"span":[180,4,29],"leadingComments":" Defines an image to use in iOS circumstances, when launching as an app shortcut.\n"},{"path":[4,0,3,0,2,8,5],"span":[180,4,10]},{"path":[4,0,3,0,2,8,1],"span":[180,11,24]},{"path":[4,0,3,0,2,8,3],"span":[180,27,28]},{"path":[4,0,3,0,2,9],"span":[183,4,32],"leadingComments":" Defines a favicon image link to apply to the browser tab.\n"},{"path":[4,0,3,0,2,9,4],"span":[183,4,12]},{"path":[4,0,3,0,2,9,6],"span":[183,13,21]},{"path":[4,0,3,0,2,9,1],"span":[183,22,26]},{"path":[4,0,3,0,2,9,3],"span":[183,29,31]},{"path":[4,0,3,0,2,10],"span":[186,4,36],"leadingComments":" Defines the language we are rendering the page for.\n"},{"path":[4,0,3,0,2,10,6],"span":[186,4,21]},{"path":[4,0,3,0,2,10,1],"span":[186,22,30]},{"path":[4,0,3,0,2,10,3],"span":[186,33,35]},{"path":[4,0,3,0,2,11],"span":[189,4,23],"leadingComments":" Identifier for Google Tag Manager.\n"},{"path":[4,0,3,0,2,11,5],"span":[189,4,10]},{"path":[4,0,3,0,2,11,1],"span":[189,11,17]},{"path":[4,0,3,0,2,11,3],"span":[189,20,22]},{"path":[4,0,3,0,2,12],"span":[192,4,26],"leadingComments":" Facebook application identifier.\n"},{"path":[4,0,3,0,2,12,5],"span":[192,4,10]},{"path":[4,0,3,0,2,12,1],"span":[192,11,20]},{"path":[4,0,3,0,2,12,3],"span":[192,23,25]},{"path":[4,0,3,0,2,13],"span":[195,4,30],"leadingComments":" Describes OpenGraph data for a given page.\n"},{"path":[4,0,3,0,2,13,6],"span":[195,4,13]},{"path":[4,0,3,0,2,13,1],"span":[195,14,24]},{"path":[4,0,3,0,2,13,3],"span":[195,27,29]},{"path":[4,0,3,0,2,14],"span":[198,4,23],"leadingComments":" Directive for indexers/robots.\n"},{"path":[4,0,3,0,2,14,5],"span":[198,4,10]},{"path":[4,0,3,0,2,14,1],"span":[198,11,17]},{"path":[4,0,3,0,2,14,3],"span":[198,20,22]},{"path":[4,0,3,0,2,15],"span":[201,4,29],"leadingComments":" Directive for color scheme compatibility.\n"},{"path":[4,0,3,0,2,15,5],"span":[201,4,10]},{"path":[4,0,3,0,2,15,1],"span":[201,11,23]},{"path":[4,0,3,0,2,15,3],"span":[201,26,28]},{"path":[4,0,3,0,2,16],"span":[204,4,35],"leadingComments":" RDFa prefixes to add. If left unset, the default OpenGraph prefix will be used.\n"},{"path":[4,0,3,0,2,16,4],"span":[204,4,12]},{"path":[4,0,3,0,2,16,6],"span":[204,13,22]},{"path":[4,0,3,0,2,16,1],"span":[204,23,29]},{"path":[4,0,3,0,2,16,3],"span":[204,32,34]},{"path":[4,0,3,0,2,17],"span":[207,4,26],"leadingComments":" Googlebot-specific directives.\n"},{"path":[4,0,3,0,2,17,5],"span":[207,4,10]},{"path":[4,0,3,0,2,17,1],"span":[207,11,20]},{"path":[4,0,3,0,2,17,3],"span":[207,23,25]},{"path":[4,0,3,0,2,18],"span":[210,4,23],"leadingComments":" Set the rating for this page (see: SafeSearch ratings).\n"},{"path":[4,0,3,0,2,18,5],"span":[210,4,10]},{"path":[4,0,3,0,2,18,1],"span":[210,11,17]},{"path":[4,0,3,0,2,18,3],"span":[210,20,22]},{"path":[4,0,3,0,2,19],"span":[213,4,33],"leadingComments":" Delegate package for use with Soy rendering, if applicable.\n"},{"path":[4,0,3,0,2,19,5],"span":[213,4,10]},{"path":[4,0,3,0,2,19,1],"span":[213,11,27]},{"path":[4,0,3,0,2,19,3],"span":[213,30,32]},{"path":[4,0,3,1],"span":[218,2,227,3],"leadingComments":" Specifies information about an asset or foreign page linked to this page. Stylesheets, favorite icons (\"favicons\"),\n HTTP preloading, and other features are implemented via HTML links.\n"},{"path":[4,0,3,1,1],"span":[218,10,18]},{"path":[4,0,3,1,2,0],"span":[220,4,25],"leadingComments":" Relevance of this link to the rest of the page.\n"},{"path":[4,0,3,1,2,0,5],"span":[220,4,10]},{"path":[4,0,3,1,2,0,1],"span":[220,11,20]},{"path":[4,0,3,1,2,0,3],"span":[220,23,24]},{"path":[4,0,3,1,2,1],"span":[223,4,20],"leadingComments":" Specifies the mime-type of this link, if applicable.\n"},{"path":[4,0,3,1,2,1,5],"span":[223,4,10]},{"path":[4,0,3,1,2,1,1],"span":[223,11,15]},{"path":[4,0,3,1,2,1,3],"span":[223,18,19]},{"path":[4,0,3,1,2,2],"span":[226,4,56],"leadingComments":" Specifies the URL target for this link.\n"},{"path":[4,0,3,1,2,2,6],"span":[226,4,46]},{"path":[4,0,3,1,2,2,1],"span":[226,47,51]},{"path":[4,0,3,1,2,2,3],"span":[226,54,55]},{"path":[4,0,3,2],"span":[231,2,350,3],"leadingComments":" Specifies details about an application manifest, which should be or is linked to a given web\n page, that is being rendered by the render engine.\n"},{"path":[4,0,3,2,1],"span":[231,10,21]},{"path":[4,0,3,2,3,0],"span":[234,4,243,5],"leadingComments":" Specifies the structure of an icon graphic linked to this web page via an application manifest.\n Icons can be specified in multiple formats and sizes.\n"},{"path":[4,0,3,2,3,0,1],"span":[234,12,16]},{"path":[4,0,3,2,3,0,2,0],"span":[236,6,57],"leadingComments":" Specifies the URI for a given icon.\n"},{"path":[4,0,3,2,3,0,2,0,6],"span":[236,6,48]},{"path":[4,0,3,2,3,0,2,0,1],"span":[236,49,52]},{"path":[4,0,3,2,3,0,2,0,3],"span":[236,55,56]},{"path":[4,0,3,2,3,0,2,1],"span":[239,6,31],"leadingComments":" Specifies the sizes that a given icon is available in.\n"},{"path":[4,0,3,2,3,0,2,1,4],"span":[239,6,14]},{"path":[4,0,3,2,3,0,2,1,5],"span":[239,15,21]},{"path":[4,0,3,2,3,0,2,1,1],"span":[239,22,26]},{"path":[4,0,3,2,3,0,2,1,3],"span":[239,29,30]},{"path":[4,0,3,2,3,0,2,2],"span":[242,6,27],"leadingComments":" Specifies the content type of a given icon.\n"},{"path":[4,0,3,2,3,0,2,2,5],"span":[242,6,12]},{"path":[4,0,3,2,3,0,2,2,1],"span":[242,13,22]},{"path":[4,0,3,2,3,0,2,2,3],"span":[242,25,26]},{"path":[4,0,3,2,4,0],"span":[247,4,263,5],"leadingComments":" Enumerates display modes which are available for selection in the web application manifest\n spec. Each display mode is described herein.\n"},{"path":[4,0,3,2,4,0,1],"span":[247,9,20]},{"path":[4,0,3,2,4,0,2,0],"span":[249,6,18],"leadingComments":" Regular browser UI. Default value if left unspecified.\n"},{"path":[4,0,3,2,4,0,2,0,1],"span":[249,6,13]},{"path":[4,0,3,2,4,0,2,0,2],"span":[249,16,17]},{"path":[4,0,3,2,4,0,2,1],"span":[252,6,21],"leadingComments":" All of the available display area is used and no user agent chrome is shown.\n"},{"path":[4,0,3,2,4,0,2,1,1],"span":[252,6,16]},{"path":[4,0,3,2,4,0,2,1,2],"span":[252,19,20]},{"path":[4,0,3,2,4,0,2,2],"span":[258,6,21],"leadingComments":" The application will look and feel like a standalone application. This can include the application\n having a different window, its own icon in the application launcher, etc. In this mode, the user\n agent will exclude UI elements for controlling navigation, but can include other UI elements such\n as a status bar.\n"},{"path":[4,0,3,2,4,0,2,2,1],"span":[258,6,16]},{"path":[4,0,3,2,4,0,2,2,2],"span":[258,19,20]},{"path":[4,0,3,2,4,0,2,3],"span":[262,6,21],"leadingComments":" The application will look and feel like a standalone application, but will have a minimal set of UI\n elements for controlling navigation. The elements will vary by browser.\n"},{"path":[4,0,3,2,4,0,2,3,1],"span":[262,6,16]},{"path":[4,0,3,2,4,0,2,3,2],"span":[262,19,20]},{"path":[4,0,3,2,4,1],"span":[267,4,282,5],"leadingComments":" Describes available orientation modes, for specifying the default orientation mode for an application\n within a web app manifest.\n"},{"path":[4,0,3,2,4,1,1],"span":[267,9,24]},{"path":[4,0,3,2,4,1,2,0],"span":[269,6,34],"leadingComments":" Unspecified, or default, orientation mode/settings.\n"},{"path":[4,0,3,2,4,1,2,0,1],"span":[269,6,29]},{"path":[4,0,3,2,4,1,2,0,2],"span":[269,32,33]},{"path":[4,0,3,2,4,1,2,1],"span":[272,6,14],"leadingComments":" Any orientation mode is supported.\n"},{"path":[4,0,3,2,4,1,2,1,1],"span":[272,6,9]},{"path":[4,0,3,2,4,1,2,1,2],"span":[272,12,13]},{"path":[4,0,3,2,4,1,2,2],"span":[275,6,18],"leadingComments":" Use the natural orientation mode for the device.\n"},{"path":[4,0,3,2,4,1,2,2,1],"span":[275,6,13]},{"path":[4,0,3,2,4,1,2,2,2],"span":[275,16,17]},{"path":[4,0,3,2,4,1,2,3],"span":[278,6,20],"leadingComments":" Use landscape mode by default.\n"},{"path":[4,0,3,2,4,1,2,3,1],"span":[278,6,15]},{"path":[4,0,3,2,4,1,2,3,2],"span":[278,18,19]},{"path":[4,0,3,2,4,1,2,4],"span":[281,6,19],"leadingComments":" Use portrait mode by default.\n"},{"path":[4,0,3,2,4,1,2,4,1],"span":[281,6,14]},{"path":[4,0,3,2,4,1,2,4,2],"span":[281,17,18]},{"path":[4,0,3,2,3,1],"span":[286,4,310,5],"leadingComments":" Specifies details about a related application, which should be considered canonically the same\n as this application, but for a different platform.\n"},{"path":[4,0,3,2,3,1,1],"span":[286,12,30]},{"path":[4,0,3,2,3,1,4,0],"span":[288,6,300,7],"leadingComments":" Enumerates known platforms where related applications might reside.\n"},{"path":[4,0,3,2,3,1,4,0,1],"span":[288,11,22]},{"path":[4,0,3,2,3,1,4,0,2,0],"span":[290,8,37],"leadingComments":" Unspecified application platform.\n"},{"path":[4,0,3,2,3,1,4,0,2,0,1],"span":[290,8,32]},{"path":[4,0,3,2,3,1,4,0,2,0,2],"span":[290,35,36]},{"path":[4,0,3,2,3,1,4,0,2,1],"span":[293,8,21],"leadingComments":" Apple App Store.\n"},{"path":[4,0,3,2,3,1,4,0,2,1,1],"span":[293,8,16]},{"path":[4,0,3,2,3,1,4,0,2,1,2],"span":[293,19,20]},{"path":[4,0,3,2,3,1,4,0,2,2],"span":[296,8,22],"leadingComments":" Google Play Store.\n"},{"path":[4,0,3,2,3,1,4,0,2,2,1],"span":[296,8,17]},{"path":[4,0,3,2,3,1,4,0,2,2,2],"span":[296,20,21]},{"path":[4,0,3,2,3,1,4,0,2,3],"span":[299,8,16],"leadingComments":" Additional web application.\n"},{"path":[4,0,3,2,3,1,4,0,2,3,1],"span":[299,8,11]},{"path":[4,0,3,2,3,1,4,0,2,3,2],"span":[299,14,15]},{"path":[4,0,3,2,3,1,2,0],"span":[303,6,20],"leadingComments":" ID for this alternative application option.\n"},{"path":[4,0,3,2,3,1,2,0,5],"span":[303,6,12]},{"path":[4,0,3,2,3,1,2,0,1],"span":[303,13,15]},{"path":[4,0,3,2,3,1,2,0,3],"span":[303,18,19]},{"path":[4,0,3,2,3,1,2,1],"span":[306,6,31],"leadingComments":" Platform that the related app is listed on.\n"},{"path":[4,0,3,2,3,1,2,1,6],"span":[306,6,17]},{"path":[4,0,3,2,3,1,2,1,1],"span":[306,18,26]},{"path":[4,0,3,2,3,1,2,1,3],"span":[306,29,30]},{"path":[4,0,3,2,3,1,2,2],"span":[309,6,57],"leadingComments":" URI where the alternative application can be downloaded.\n"},{"path":[4,0,3,2,3,1,2,2,6],"span":[309,6,48]},{"path":[4,0,3,2,3,1,2,2,1],"span":[309,49,52]},{"path":[4,0,3,2,3,1,2,2,3],"span":[309,55,56]},{"path":[4,0,3,2,2,0],"span":[313,4,20],"leadingComments":" Full name for this application.\n"},{"path":[4,0,3,2,2,0,5],"span":[313,4,10]},{"path":[4,0,3,2,2,0,1],"span":[313,11,15]},{"path":[4,0,3,2,2,0,3],"span":[313,18,19]},{"path":[4,0,3,2,2,1],"span":[316,4,26],"leadingComments":" Short name for this application.\n"},{"path":[4,0,3,2,2,1,5],"span":[316,4,10]},{"path":[4,0,3,2,2,1,1],"span":[316,11,21]},{"path":[4,0,3,2,2,1,3],"span":[316,24,25]},{"path":[4,0,3,2,2,2],"span":[319,4,25],"leadingComments":" Starting URL where this application can be entered.\n"},{"path":[4,0,3,2,2,2,5],"span":[319,4,10]},{"path":[4,0,3,2,2,2,1],"span":[319,11,20]},{"path":[4,0,3,2,2,2,3],"span":[319,23,24]},{"path":[4,0,3,2,2,3],"span":[322,4,28],"leadingComments":" Defines the developers' preferred display mode for this application.\n"},{"path":[4,0,3,2,2,3,6],"span":[322,4,15]},{"path":[4,0,3,2,2,3,1],"span":[322,16,23]},{"path":[4,0,3,2,2,3,3],"span":[322,26,27]},{"path":[4,0,3,2,2,4],"span":[325,4,32],"leadingComments":" Defines the expected application background color.\n"},{"path":[4,0,3,2,2,4,5],"span":[325,4,10]},{"path":[4,0,3,2,2,4,1],"span":[325,11,27]},{"path":[4,0,3,2,2,4,3],"span":[325,30,31]},{"path":[4,0,3,2,2,5],"span":[328,4,27],"leadingComments":" Specifies a narrative description about this application.\n"},{"path":[4,0,3,2,2,5,5],"span":[328,4,10]},{"path":[4,0,3,2,2,5,1],"span":[328,11,22]},{"path":[4,0,3,2,2,5,3],"span":[328,25,26]},{"path":[4,0,3,2,2,6],"span":[331,4,25],"leadingComments":" Specifies the language direction - RTL or LTR, for this application.\n"},{"path":[4,0,3,2,2,6,5],"span":[331,4,10]},{"path":[4,0,3,2,2,6,1],"span":[331,11,20]},{"path":[4,0,3,2,2,6,3],"span":[331,23,24]},{"path":[4,0,3,2,2,7],"span":[334,4,35],"leadingComments":" Specifies the language this application is being served in.\n"},{"path":[4,0,3,2,2,7,6],"span":[334,4,21]},{"path":[4,0,3,2,2,7,1],"span":[334,22,30]},{"path":[4,0,3,2,2,7,3],"span":[334,33,34]},{"path":[4,0,3,2,2,8],"span":[337,4,36],"leadingComments":" Specifies expected screen orientation for this application.\n"},{"path":[4,0,3,2,2,8,6],"span":[337,4,19]},{"path":[4,0,3,2,2,8,1],"span":[337,20,31]},{"path":[4,0,3,2,2,8,3],"span":[337,34,35]},{"path":[4,0,3,2,2,9],"span":[340,4,22],"leadingComments":" Defines the navigation scope for this web application's context.\n"},{"path":[4,0,3,2,2,9,5],"span":[340,4,10]},{"path":[4,0,3,2,2,9,1],"span":[340,11,16]},{"path":[4,0,3,2,2,9,3],"span":[340,19,21]},{"path":[4,0,3,2,2,10],"span":[343,4,42],"leadingComments":" Flag indicating whether we want to prefer native apps for the user's experience.\n"},{"path":[4,0,3,2,2,10,5],"span":[343,4,8]},{"path":[4,0,3,2,2,10,1],"span":[343,9,36]},{"path":[4,0,3,2,2,10,3],"span":[343,39,41]},{"path":[4,0,3,2,2,11],"span":[346,4,57],"leadingComments":" Related native applications that should be considered along with this web application.\n"},{"path":[4,0,3,2,2,11,4],"span":[346,4,12]},{"path":[4,0,3,2,2,11,6],"span":[346,13,31]},{"path":[4,0,3,2,2,11,1],"span":[346,32,51]},{"path":[4,0,3,2,2,11,3],"span":[346,54,56]},{"path":[4,0,3,2,2,12],"span":[349,4,32],"leadingComments":" Application icons listed with this manifest.\n"},{"path":[4,0,3,2,2,12,4],"span":[349,4,12]},{"path":[4,0,3,2,2,12,6],"span":[349,13,17]},{"path":[4,0,3,2,2,12,1],"span":[349,18,26]},{"path":[4,0,3,2,2,12,3],"span":[349,29,31]},{"path":[4,0,3,3],"span":[354,2,382,3],"leadingComments":" Defines page-level style settings (CSS), including external stylesheets, lifted CSS that should\n be rendered in the <head>, and more.\n"},{"path":[4,0,3,3,1],"span":[354,10,16]},{"path":[4,0,3,3,3,0],"span":[357,4,375,5],"leadingComments":" Defines the notion of an external stylesheet document, written in CSS, which should be included\n via reference rather than inline.\n"},{"path":[4,0,3,3,3,0,1],"span":[357,12,22]},{"path":[4,0,3,3,3,0,2,0],"span":[359,6,57],"leadingComments":" URI to a given stylesheet asset.\n"},{"path":[4,0,3,3,3,0,2,0,6],"span":[359,6,48]},{"path":[4,0,3,3,3,0,2,0,1],"span":[359,49,52]},{"path":[4,0,3,3,3,0,2,0,3],"span":[359,55,56]},{"path":[4,0,3,3,3,0,2,1],"span":[362,6,20],"leadingComments":" ID at which to attach the script tag in the DOM.\n"},{"path":[4,0,3,3,3,0,2,1,5],"span":[362,6,12]},{"path":[4,0,3,3,3,0,2,1,1],"span":[362,13,15]},{"path":[4,0,3,3,3,0,2,1,3],"span":[362,18,19]},{"path":[4,0,3,3,3,0,2,2],"span":[365,6,23],"leadingComments":" Media setting to apply to the style sheet.\n"},{"path":[4,0,3,3,3,0,2,2,5],"span":[365,6,12]},{"path":[4,0,3,3,3,0,2,2,1],"span":[365,13,18]},{"path":[4,0,3,3,3,0,2,2,3],"span":[365,21,22]},{"path":[4,0,3,3,3,0,2,3],"span":[368,6,24],"leadingComments":" Whether to pre-fetch this asset, as applicable.\n"},{"path":[4,0,3,3,3,0,2,3,5],"span":[368,6,10]},{"path":[4,0,3,3,3,0,2,3,1],"span":[368,11,19]},{"path":[4,0,3,3,3,0,2,3,3],"span":[368,22,23]},{"path":[4,0,3,3,3,0,2,4],"span":[371,6,23],"leadingComments":" Whether to pre-load this asset, as applicable.\n"},{"path":[4,0,3,3,3,0,2,4,5],"span":[371,6,10]},{"path":[4,0,3,3,3,0,2,4,1],"span":[371,11,18]},{"path":[4,0,3,3,3,0,2,4,3],"span":[371,21,22]},{"path":[4,0,3,3,3,0,2,5],"span":[374,6,20],"leadingComments":" Whether to proactively push this asset, as applicable.\n"},{"path":[4,0,3,3,3,0,2,5,5],"span":[374,6,10]},{"path":[4,0,3,3,3,0,2,5,1],"span":[374,11,15]},{"path":[4,0,3,3,3,0,2,5,3],"span":[374,18,19]},{"path":[4,0,3,3,2,0],"span":[378,4,49],"leadingComments":" CSS code that should be emitted early in the <head>.\n"},{"path":[4,0,3,3,2,0,6],"span":[378,4,37]},{"path":[4,0,3,3,2,0,1],"span":[378,38,44]},{"path":[4,0,3,3,2,0,3],"span":[378,47,48]},{"path":[4,0,3,3,2,1],"span":[381,4,33],"leadingComments":" External CSS code to be included in <link> tags.\n"},{"path":[4,0,3,3,2,1,4],"span":[381,4,12]},{"path":[4,0,3,3,2,1,6],"span":[381,13,23]},{"path":[4,0,3,3,2,1,1],"span":[381,24,28]},{"path":[4,0,3,3,2,1,3],"span":[381,31,32]},{"path":[4,0,3,4],"span":[386,2,461,3],"leadingComments":" Specifies information about sets of fonts to include in the page via CSS declarations, or imports/link\n references. Fonts are considered part of the stylesheet set of a page.\n"},{"path":[4,0,3,4,1],"span":[386,10,15]},{"path":[4,0,3,4,4,0],"span":[388,4,394,5],"leadingComments":" Specifies types of references to font assets that are understood by the rendering system.\n"},{"path":[4,0,3,4,4,0,1],"span":[388,9,26]},{"path":[4,0,3,4,4,0,2,0],"span":[390,6,19],"leadingComments":" Specifies an internal font, or an explicit set of font assets.\n"},{"path":[4,0,3,4,4,0,2,0,1],"span":[390,6,14]},{"path":[4,0,3,4,4,0,2,0,2],"span":[390,17,18]},{"path":[4,0,3,4,4,0,2,1],"span":[393,6,23],"leadingComments":" Specifies a font hosted on Google Fonts.\n"},{"path":[4,0,3,4,4,0,2,1,1],"span":[393,6,18]},{"path":[4,0,3,4,4,0,2,1,2],"span":[393,21,22]},{"path":[4,0,3,4,4,1],"span":[397,4,418,5],"leadingComments":" Specifies types of font formats supported for serving by the system.\n"},{"path":[4,0,3,4,4,1,1],"span":[397,9,19]},{"path":[4,0,3,4,4,1,2,0],"span":[399,6,29],"leadingComments":" Unspecified font format.\n"},{"path":[4,0,3,4,4,1,2,0,1],"span":[399,6,24]},{"path":[4,0,3,4,4,1,2,0,2],"span":[399,27,28]},{"path":[4,0,3,4,4,1,2,1],"span":[402,6,19],"leadingComments":" OpenType Format (OTF).\n"},{"path":[4,0,3,4,4,1,2,1,1],"span":[402,6,14]},{"path":[4,0,3,4,4,1,2,1,2],"span":[402,17,18]},{"path":[4,0,3,4,4,1,2,2],"span":[405,6,19],"leadingComments":" TrueType Format (TTF).\n"},{"path":[4,0,3,4,4,1,2,2,1],"span":[405,6,14]},{"path":[4,0,3,4,4,1,2,2,2],"span":[405,17,18]},{"path":[4,0,3,4,4,1,2,3],"span":[408,6,17],"leadingComments":" Scalable Vector Graphics (SVG).\n"},{"path":[4,0,3,4,4,1,2,3,1],"span":[408,6,12]},{"path":[4,0,3,4,4,1,2,3,2],"span":[408,15,16]},{"path":[4,0,3,4,4,1,2,4],"span":[411,6,18],"leadingComments":" Web Open Font Format (WOFF).\n"},{"path":[4,0,3,4,4,1,2,4,1],"span":[411,6,13]},{"path":[4,0,3,4,4,1,2,4,2],"span":[411,16,17]},{"path":[4,0,3,4,4,1,2,5],"span":[414,6,19],"leadingComments":" Web Open Font Format 2 (WOFF2).\n"},{"path":[4,0,3,4,4,1,2,5,1],"span":[414,6,14]},{"path":[4,0,3,4,4,1,2,5,2],"span":[414,17,18]},{"path":[4,0,3,4,4,1,2,6],"span":[417,6,28],"leadingComments":" Embedded OpenType (EOT).\n"},{"path":[4,0,3,4,4,1,2,6,1],"span":[417,6,23]},{"path":[4,0,3,4,4,1,2,6,2],"span":[417,26,27]},{"path":[4,0,3,4,3,0],"span":[421,4,448,5],"leadingComments":" Specifies information about an individual reference to a font file.\n"},{"path":[4,0,3,4,3,0,1],"span":[421,12,25]},{"path":[4,0,3,4,3,0,2,0],"span":[423,6,33],"leadingComments":" Specifies the type of reference being made.\n"},{"path":[4,0,3,4,3,0,2,0,6],"span":[423,6,23]},{"path":[4,0,3,4,3,0,2,0,1],"span":[423,24,28]},{"path":[4,0,3,4,3,0,2,0,3],"span":[423,31,32]},{"path":[4,0,3,4,3,0,2,1],"span":[426,6,28],"leadingComments":" Specifies the format of the font reference being made.\n"},{"path":[4,0,3,4,3,0,2,1,6],"span":[426,6,16]},{"path":[4,0,3,4,3,0,2,1,1],"span":[426,17,23]},{"path":[4,0,3,4,3,0,2,1,3],"span":[426,26,27]},{"path":[4,0,3,4,3,0,2,2],"span":[429,6,22],"leadingComments":" Name of the font reference.\n"},{"path":[4,0,3,4,3,0,2,2,5],"span":[429,6,12]},{"path":[4,0,3,4,3,0,2,2,1],"span":[429,13,17]},{"path":[4,0,3,4,3,0,2,2,3],"span":[429,20,21]},{"path":[4,0,3,4,3,0,2,3],"span":[432,6,24],"leadingComments":" Weight of the font reference.\n"},{"path":[4,0,3,4,3,0,2,3,5],"span":[432,6,12]},{"path":[4,0,3,4,3,0,2,3,1],"span":[432,13,19]},{"path":[4,0,3,4,3,0,2,3,3],"span":[432,22,23]},{"path":[4,0,3,4,3,0,2,4],"span":[435,6,25],"leadingComments":" Variant of the font reference.\n"},{"path":[4,0,3,4,3,0,2,4,5],"span":[435,6,12]},{"path":[4,0,3,4,3,0,2,4,1],"span":[435,13,20]},{"path":[4,0,3,4,3,0,2,4,3],"span":[435,23,24]},{"path":[4,0,3,4,3,0,2,5],"span":[438,6,57],"leadingComments":" URI reference to this font asset.\n"},{"path":[4,0,3,4,3,0,2,5,6],"span":[438,6,48]},{"path":[4,0,3,4,3,0,2,5,1],"span":[438,49,52]},{"path":[4,0,3,4,3,0,2,5,3],"span":[438,55,56]},{"path":[4,0,3,4,3,0,2,6],"span":[441,6,24],"leadingComments":" Whether to pre-fetch this asset, as applicable.\n"},{"path":[4,0,3,4,3,0,2,6,5],"span":[441,6,10]},{"path":[4,0,3,4,3,0,2,6,1],"span":[441,11,19]},{"path":[4,0,3,4,3,0,2,6,3],"span":[441,22,23]},{"path":[4,0,3,4,3,0,2,7],"span":[444,6,23],"leadingComments":" Whether to pre-load this asset, as applicable.\n"},{"path":[4,0,3,4,3,0,2,7,5],"span":[444,6,10]},{"path":[4,0,3,4,3,0,2,7,1],"span":[444,11,18]},{"path":[4,0,3,4,3,0,2,7,3],"span":[444,21,22]},{"path":[4,0,3,4,3,0,2,8],"span":[447,6,20],"leadingComments":" Whether to proactively push this asset, as applicable.\n"},{"path":[4,0,3,4,3,0,2,8,5],"span":[447,6,10]},{"path":[4,0,3,4,3,0,2,8,1],"span":[447,11,15]},{"path":[4,0,3,4,3,0,2,8,3],"span":[447,18,19]},{"path":[4,0,3,4,3,1],"span":[451,4,457,5],"leadingComments":" Specifies a package of fonts included for reference in a given web page.\n"},{"path":[4,0,3,4,3,1,1],"span":[451,12,23]},{"path":[4,0,3,4,3,1,2,0],"span":[453,6,22],"leadingComments":" Specifies the CSS name used for this font package/family.\n"},{"path":[4,0,3,4,3,1,2,0,5],"span":[453,6,12]},{"path":[4,0,3,4,3,1,2,0,1],"span":[453,13,17]},{"path":[4,0,3,4,3,1,2,0,3],"span":[453,20,21]},{"path":[4,0,3,4,3,1,2,1],"span":[456,6,43],"leadingComments":" References to individual constituent font assets.\n"},{"path":[4,0,3,4,3,1,2,1,4],"span":[456,6,14]},{"path":[4,0,3,4,3,1,2,1,6],"span":[456,15,28]},{"path":[4,0,3,4,3,1,2,1,1],"span":[456,29,38]},{"path":[4,0,3,4,3,1,2,1,3],"span":[456,41,42]},{"path":[4,0,3,4,2,0],"span":[460,4,37],"leadingComments":" Specifies packages of fonts included for reference.\n"},{"path":[4,0,3,4,2,0,4],"span":[460,4,12]},{"path":[4,0,3,4,2,0,6],"span":[460,13,24]},{"path":[4,0,3,4,2,0,1],"span":[460,25,32]},{"path":[4,0,3,4,2,0,3],"span":[460,35,36]},{"path":[4,0,3,5],"span":[465,2,502,3],"leadingComments":" Specifies information about JavaScript code that should be included with a given page render. Scripts\n included in this manner may be emitted inline or by reference (URI).\n"},{"path":[4,0,3,5,1],"span":[465,10,17]},{"path":[4,0,3,5,3,0],"span":[468,4,495,5],"leadingComments":" Defines the notion of an external script document, written in JavaScript, which should be included\n via reference rather than inline.\n"},{"path":[4,0,3,5,3,0,1],"span":[468,12,22]},{"path":[4,0,3,5,3,0,2,0],"span":[470,6,57],"leadingComments":" URI to a given script asset.\n"},{"path":[4,0,3,5,3,0,2,0,6],"span":[470,6,48]},{"path":[4,0,3,5,3,0,2,0,1],"span":[470,49,52]},{"path":[4,0,3,5,3,0,2,0,3],"span":[470,55,56]},{"path":[4,0,3,5,3,0,2,1],"span":[473,6,20],"leadingComments":" ID at which to attach the script tag in the DOM.\n"},{"path":[4,0,3,5,3,0,2,1,5],"span":[473,6,12]},{"path":[4,0,3,5,3,0,2,1,1],"span":[473,13,15]},{"path":[4,0,3,5,3,0,2,1,3],"span":[473,18,19]},{"path":[4,0,3,5,3,0,2,2],"span":[476,6,21],"leadingComments":" Whether to add the `defer` flag to a script.\n"},{"path":[4,0,3,5,3,0,2,2,5],"span":[476,6,10]},{"path":[4,0,3,5,3,0,2,2,1],"span":[476,11,16]},{"path":[4,0,3,5,3,0,2,2,3],"span":[476,19,20]},{"path":[4,0,3,5,3,0,2,3],"span":[479,6,21],"leadingComments":" Whether to add the `async` flag to a script.\n"},{"path":[4,0,3,5,3,0,2,3,5],"span":[479,6,10]},{"path":[4,0,3,5,3,0,2,3,1],"span":[479,11,16]},{"path":[4,0,3,5,3,0,2,3,3],"span":[479,19,20]},{"path":[4,0,3,5,3,0,2,4],"span":[482,6,22],"leadingComments":" Whether to add the `module` flag to a script.\n"},{"path":[4,0,3,5,3,0,2,4,5],"span":[482,6,10]},{"path":[4,0,3,5,3,0,2,4,1],"span":[482,11,17]},{"path":[4,0,3,5,3,0,2,4,3],"span":[482,20,21]},{"path":[4,0,3,5,3,0,2,5],"span":[485,6,25],"leadingComments":" Whether to add the `nomodule` flag to a script.\n"},{"path":[4,0,3,5,3,0,2,5,5],"span":[485,6,10]},{"path":[4,0,3,5,3,0,2,5,1],"span":[485,11,20]},{"path":[4,0,3,5,3,0,2,5,3],"span":[485,23,24]},{"path":[4,0,3,5,3,0,2,6],"span":[488,6,24],"leadingComments":" Whether to pre-fetch this asset, as applicable.\n"},{"path":[4,0,3,5,3,0,2,6,5],"span":[488,6,10]},{"path":[4,0,3,5,3,0,2,6,1],"span":[488,11,19]},{"path":[4,0,3,5,3,0,2,6,3],"span":[488,22,23]},{"path":[4,0,3,5,3,0,2,7],"span":[491,6,23],"leadingComments":" Whether to pre-load this asset, as applicable.\n"},{"path":[4,0,3,5,3,0,2,7,5],"span":[491,6,10]},{"path":[4,0,3,5,3,0,2,7,1],"span":[491,11,18]},{"path":[4,0,3,5,3,0,2,7,3],"span":[491,21,22]},{"path":[4,0,3,5,3,0,2,8],"span":[494,6,20],"leadingComments":" Whether to proactively push this asset, as applicable.\n"},{"path":[4,0,3,5,3,0,2,8,5],"span":[494,6,10]},{"path":[4,0,3,5,3,0,2,8,1],"span":[494,11,15]},{"path":[4,0,3,5,3,0,2,8,3],"span":[494,18,19]},{"path":[4,0,3,5,2,0],"span":[498,4,50],"leadingComments":" JavaScript code that should be emitted early in the <head>.\n"},{"path":[4,0,3,5,2,0,6],"span":[498,4,38]},{"path":[4,0,3,5,2,0,1],"span":[498,39,45]},{"path":[4,0,3,5,2,0,3],"span":[498,48,49]},{"path":[4,0,3,5,2,1],"span":[501,4,33],"leadingComments":" External JavaScript code to be included in <link> tags.\n"},{"path":[4,0,3,5,2,1,4],"span":[501,4,12]},{"path":[4,0,3,5,2,1,6],"span":[501,13,23]},{"path":[4,0,3,5,2,1,1],"span":[501,24,28]},{"path":[4,0,3,5,2,1,3],"span":[501,31,32]},{"path":[4,0,3,6],"span":[506,2,518,3],"leadingComments":" Defines the notion of a dynamically-served-page `ETag`, which is calculated either from weak parameters (the date/\n time it was served and a simple hash of the request) or strong parameters (full hash of the response).\n"},{"path":[4,0,3,6,1],"span":[506,10,21]},{"path":[4,0,3,6,2,0],"span":[508,4,21],"leadingComments":" Whether to enable dynamic `ETag`s.\n"},{"path":[4,0,3,6,2,0,5],"span":[508,4,8]},{"path":[4,0,3,6,2,0,1],"span":[508,9,16]},{"path":[4,0,3,6,2,0,3],"span":[508,19,20]},{"path":[4,0,3,6,2,1],"span":[511,4,20],"leadingComments":" Flipped to `true` if the `ETag` was generated from a full response pre-image.\n"},{"path":[4,0,3,6,2,1,5],"span":[511,4,8]},{"path":[4,0,3,6,2,1,1],"span":[511,9,15]},{"path":[4,0,3,6,2,1,3],"span":[511,18,19]},{"path":[4,0,3,6,2,2],"span":[514,4,38],"leadingComments":" Raw `ETag` component describing the request/operation pre-image.\n"},{"path":[4,0,3,6,2,2,6],"span":[514,4,24]},{"path":[4,0,3,6,2,2,1],"span":[514,25,33]},{"path":[4,0,3,6,2,2,3],"span":[514,36,37]},{"path":[4,0,3,6,2,3],"span":[517,4,38],"leadingComments":" Raw `ETag` component describing the response. Leave unset to calculate dynamically.\n"},{"path":[4,0,3,6,2,3,6],"span":[517,4,24]},{"path":[4,0,3,6,2,3,1],"span":[517,25,33]},{"path":[4,0,3,6,2,3,3],"span":[517,36,37]},{"path":[4,0,3,7],"span":[521,2,527,3],"leadingComments":" Specifies an individual RDF prefix block to include in the HTML tag.\n"},{"path":[4,0,3,7,1],"span":[521,10,19]},{"path":[4,0,3,7,2,0],"span":[523,4,22],"leadingComments":" Prefix value to apply.\n"},{"path":[4,0,3,7,2,0,5],"span":[523,4,10]},{"path":[4,0,3,7,2,0,1],"span":[523,11,17]},{"path":[4,0,3,7,2,0,3],"span":[523,20,21]},{"path":[4,0,3,7,2,1],"span":[526,4,22],"leadingComments":" Target value to apply.\n"},{"path":[4,0,3,7,2,1,5],"span":[526,4,10]},{"path":[4,0,3,7,2,1,1],"span":[526,11,17]},{"path":[4,0,3,7,2,1,3],"span":[526,20,21]},{"path":[4,0,3,8],"span":[530,2,578,3],"leadingComments":" HTTP cookies to set on the response, including the content of each cookie, name, and any flags.\n"},{"path":[4,0,3,8,1],"span":[530,10,16]},{"path":[4,0,3,8,4,0],"span":[532,4,541,5],"leadingComments":" Enumerates options for same-site cookie policies.\n"},{"path":[4,0,3,8,4,0,1],"span":[532,9,23]},{"path":[4,0,3,8,4,0,2,0],"span":[534,6,30],"leadingComments":" No policy.\n"},{"path":[4,0,3,8,4,0,2,0,1],"span":[534,6,25]},{"path":[4,0,3,8,4,0,2,0,2],"span":[534,28,29]},{"path":[4,0,3,8,4,0,2,1],"span":[537,6,14],"leadingComments":" `Lax` policy for `SameSite`.\n"},{"path":[4,0,3,8,4,0,2,1,1],"span":[537,6,9]},{"path":[4,0,3,8,4,0,2,1,2],"span":[537,12,13]},{"path":[4,0,3,8,4,0,2,2],"span":[540,6,17],"leadingComments":" `Strict` policy for `SameSite`.\n"},{"path":[4,0,3,8,4,0,2,2,1],"span":[540,6,12]},{"path":[4,0,3,8,4,0,2,2,2],"span":[540,15,16]},{"path":[4,0,3,8,2,0],"span":[544,4,20],"leadingComments":" Name of the cookie to set.\n"},{"path":[4,0,3,8,2,0,5],"span":[544,4,10]},{"path":[4,0,3,8,2,0,1],"span":[544,11,15]},{"path":[4,0,3,8,2,0,3],"span":[544,18,19]},{"path":[4,0,3,8,2,1],"span":[547,4,21],"leadingComments":" Value of the cookie to set. Optional. If left empty, the specified cookie will be cleared.\n"},{"path":[4,0,3,8,2,1,5],"span":[547,4,10]},{"path":[4,0,3,8,2,1,1],"span":[547,11,16]},{"path":[4,0,3,8,2,1,3],"span":[547,19,20]},{"path":[4,0,3,8,2,2],"span":[550,4,22],"leadingComments":" Domain value of the cookie to set. Optional.\n"},{"path":[4,0,3,8,2,2,5],"span":[550,4,10]},{"path":[4,0,3,8,2,2,1],"span":[550,11,17]},{"path":[4,0,3,8,2,2,3],"span":[550,20,21]},{"path":[4,0,3,8,2,3],"span":[553,4,20],"leadingComments":" Path value of the cookie to set. Optional.\n"},{"path":[4,0,3,8,2,3,5],"span":[553,4,10]},{"path":[4,0,3,8,2,3,1],"span":[553,11,15]},{"path":[4,0,3,8,2,3,3],"span":[553,18,19]},{"path":[4,0,3,8,8,0],"span":[556,4,568,5],"leadingComments":" Specifies the strategy to employ for cookie expiration.\n"},{"path":[4,0,3,8,8,0,1],"span":[556,10,29]},{"path":[4,0,3,8,2,4],"span":[558,6,32],"leadingComments":" Immediately expire the cookie.\n"},{"path":[4,0,3,8,2,4,5],"span":[558,6,10]},{"path":[4,0,3,8,2,4,1],"span":[558,11,27]},{"path":[4,0,3,8,2,4,3],"span":[558,30,31]},{"path":[4,0,3,8,2,5],"span":[561,6,52],"leadingComments":" Sets an absolute time-point value for cookie expiration.\n"},{"path":[4,0,3,8,2,5,6],"span":[561,6,31]},{"path":[4,0,3,8,2,5,1],"span":[561,32,47]},{"path":[4,0,3,8,2,5,3],"span":[561,50,51]},{"path":[4,0,3,8,2,6],"span":[564,6,51],"leadingComments":" Sets a relative time-period value for cookie expiration.\n"},{"path":[4,0,3,8,2,6,6],"span":[564,6,30]},{"path":[4,0,3,8,2,6,1],"span":[564,31,46]},{"path":[4,0,3,8,2,6,3],"span":[564,49,50]},{"path":[4,0,3,8,2,7],"span":[567,6,25],"leadingComments":" Set a far-future expiration.\n"},{"path":[4,0,3,8,2,7,5],"span":[567,6,10]},{"path":[4,0,3,8,2,7,1],"span":[567,11,20]},{"path":[4,0,3,8,2,7,3],"span":[567,23,24]},{"path":[4,0,3,8,2,8],"span":[571,4,23],"leadingComments":" `HttpOnly` flag for the cookie.\n"},{"path":[4,0,3,8,2,8,5],"span":[571,4,8]},{"path":[4,0,3,8,2,8,1],"span":[571,9,18]},{"path":[4,0,3,8,2,8,3],"span":[571,21,22]},{"path":[4,0,3,8,2,9],"span":[574,4,21],"leadingComments":" `Secure` flag for the cookie.\n"},{"path":[4,0,3,8,2,9,5],"span":[574,4,8]},{"path":[4,0,3,8,2,9,1],"span":[574,9,15]},{"path":[4,0,3,8,2,9,3],"span":[574,18,20]},{"path":[4,0,3,8,2,10],"span":[577,4,34],"leadingComments":" `SameSite` policy flag for the cookie.\n"},{"path":[4,0,3,8,2,10,6],"span":[577,4,18]},{"path":[4,0,3,8,2,10,1],"span":[577,19,28]},{"path":[4,0,3,8,2,10,3],"span":[577,31,33]},{"path":[4,0,4,0],"span":[581,2,608,3],"leadingComments":" Specifies supported client hints.\n"},{"path":[4,0,4,0,1],"span":[581,7,17]},{"path":[4,0,4,0,2,0],"span":[583,4,28],"leadingComments":" An unknown client hint type.\n"},{"path":[4,0,4,0,2,0,1],"span":[583,4,23]},{"path":[4,0,4,0,2,0,2],"span":[583,26,27]},{"path":[4,0,4,0,2,1],"span":[586,4,12],"leadingComments":" Device Pixel Ratio.\n"},{"path":[4,0,4,0,2,1,1],"span":[586,4,7]},{"path":[4,0,4,0,2,1,2],"span":[586,10,11]},{"path":[4,0,4,0,2,2],"span":[589,4,12],"leadingComments":" Effective Connection Type.\n"},{"path":[4,0,4,0,2,2,1],"span":[589,4,7]},{"path":[4,0,4,0,2,2,2],"span":[589,10,11]},{"path":[4,0,4,0,2,3],"span":[592,4,12],"leadingComments":" Round Trip Time.\n"},{"path":[4,0,4,0,2,3,1],"span":[592,4,7]},{"path":[4,0,4,0,2,3,2],"span":[592,10,11]},{"path":[4,0,4,0,2,4],"span":[595,4,17],"leadingComments":" Down-link speed estimate.\n"},{"path":[4,0,4,0,2,4,1],"span":[595,4,12]},{"path":[4,0,4,0,2,4,2],"span":[595,15,16]},{"path":[4,0,4,0,2,5],"span":[598,4,22],"leadingComments":" `Device-Memory` rating/estimate.\n"},{"path":[4,0,4,0,2,5,1],"span":[598,4,17]},{"path":[4,0,4,0,2,5,2],"span":[598,20,21]},{"path":[4,0,4,0,2,6],"span":[601,4,18],"leadingComments":" `Save-Data` flag/feature.\n"},{"path":[4,0,4,0,2,6,1],"span":[601,4,13]},{"path":[4,0,4,0,2,6,2],"span":[601,16,17]},{"path":[4,0,4,0,2,7],"span":[604,4,14],"leadingComments":" Describes the width of a requested resource.\n"},{"path":[4,0,4,0,2,7,1],"span":[604,4,9]},{"path":[4,0,4,0,2,7,2],"span":[604,12,13]},{"path":[4,0,4,0,2,8],"span":[607,4,23],"leadingComments":" Describes the width of the browser viewport.\n"},{"path":[4,0,4,0,2,8,1],"span":[607,4,18]},{"path":[4,0,4,0,2,8,2],"span":[607,21,22]},{"path":[4,0,4,1],"span":[611,2,626,3],"leadingComments":" Specifies estimated connection speed levels.\n"},{"path":[4,0,4,1,1],"span":[611,7,21]},{"path":[4,0,4,1,2,0],"span":[613,4,32],"leadingComments":" An unknown or unrecognized connection hint type.\n"},{"path":[4,0,4,1,2,0,1],"span":[613,4,27]},{"path":[4,0,4,1,2,0,2],"span":[613,30,31]},{"path":[4,0,4,1,2,1],"span":[616,4,17],"leadingComments":" Slow connections, like 2G.\n"},{"path":[4,0,4,1,2,1,1],"span":[616,4,12]},{"path":[4,0,4,1,2,1,2],"span":[616,15,16]},{"path":[4,0,4,1,2,2],"span":[619,4,13],"leadingComments":" Connections approximating 2G.\n"},{"path":[4,0,4,1,2,2,1],"span":[619,4,8]},{"path":[4,0,4,1,2,2,2],"span":[619,11,12]},{"path":[4,0,4,1,2,3],"span":[622,4,16],"leadingComments":" Connections approximating 3G.\n"},{"path":[4,0,4,1,2,3,1],"span":[622,4,11]},{"path":[4,0,4,1,2,3,2],"span":[622,14,15]},{"path":[4,0,4,1,2,4],"span":[625,4,13],"leadingComments":" Connections approximating 4G.\n"},{"path":[4,0,4,1,2,4,1],"span":[625,4,8]},{"path":[4,0,4,1,2,4,2],"span":[625,11,12]},{"path":[4,0,3,9],"span":[629,2,662,3],"leadingComments":" Specifies client hints context information.\n"},{"path":[4,0,3,9,1],"span":[629,10,21]},{"path":[4,0,3,9,2,0],"span":[631,4,38],"leadingComments":" Client hints supported by the server for this HTTP cycle.\n"},{"path":[4,0,3,9,2,0,4],"span":[631,4,12]},{"path":[4,0,3,9,2,0,6],"span":[631,13,23]},{"path":[4,0,3,9,2,0,1],"span":[631,24,33]},{"path":[4,0,3,9,2,0,3],"span":[631,36,37]},{"path":[4,0,3,9,2,1],"span":[634,4,38],"leadingComments":" Client hints indicated by the client for this HTTP cycle.\n"},{"path":[4,0,3,9,2,1,4],"span":[634,4,12]},{"path":[4,0,3,9,2,1,6],"span":[634,13,23]},{"path":[4,0,3,9,2,1,1],"span":[634,24,33]},{"path":[4,0,3,9,2,1,3],"span":[634,36,37]},{"path":[4,0,3,9,2,2],"span":[637,4,24],"leadingComments":" Time-to-live for Client Hints configuration, in seconds.\n"},{"path":[4,0,3,9,2,2,5],"span":[637,4,10]},{"path":[4,0,3,9,2,2,1],"span":[637,11,19]},{"path":[4,0,3,9,2,2,3],"span":[637,22,23]},{"path":[4,0,3,9,2,3],"span":[640,4,21],"leadingComments":" Viewport width reported by the client.\n"},{"path":[4,0,3,9,2,3,5],"span":[640,4,10]},{"path":[4,0,3,9,2,3,1],"span":[640,11,16]},{"path":[4,0,3,9,2,3,3],"span":[640,19,20]},{"path":[4,0,3,9,2,4],"span":[643,4,30],"leadingComments":" Viewport width reported by the client.\n"},{"path":[4,0,3,9,2,4,5],"span":[643,4,10]},{"path":[4,0,3,9,2,4,1],"span":[643,11,25]},{"path":[4,0,3,9,2,4,3],"span":[643,28,29]},{"path":[4,0,3,9,2,5],"span":[646,4,34],"leadingComments":" Pixel ratio value reported by the client.\n"},{"path":[4,0,3,9,2,5,5],"span":[646,4,10]},{"path":[4,0,3,9,2,5,1],"span":[646,11,29]},{"path":[4,0,3,9,2,5,3],"span":[646,32,33]},{"path":[4,0,3,9,2,6],"span":[649,4,31],"leadingComments":" Latency reported by the client. Includes server latency.\n"},{"path":[4,0,3,9,2,6,5],"span":[649,4,10]},{"path":[4,0,3,9,2,6,1],"span":[649,11,26]},{"path":[4,0,3,9,2,6,3],"span":[649,29,30]},{"path":[4,0,3,9,2,7],"span":[652,4,23],"leadingComments":" Estimated/reported down-link speed for the client.\n"},{"path":[4,0,3,9,2,7,5],"span":[652,4,9]},{"path":[4,0,3,9,2,7,1],"span":[652,10,18]},{"path":[4,0,3,9,2,7,3],"span":[652,21,22]},{"path":[4,0,3,9,2,8],"span":[655,4,49],"leadingComments":" Reported effective-connection-type for the client.\n"},{"path":[4,0,3,9,2,8,6],"span":[655,4,18]},{"path":[4,0,3,9,2,8,1],"span":[655,19,44]},{"path":[4,0,3,9,2,8,3],"span":[655,47,48]},{"path":[4,0,3,9,2,9],"span":[658,4,24],"leadingComments":" Flag indicating whether the `Save-Data` token was passed by the client.\n"},{"path":[4,0,3,9,2,9,5],"span":[658,4,8]},{"path":[4,0,3,9,2,9,1],"span":[658,9,18]},{"path":[4,0,3,9,2,9,3],"span":[658,21,23]},{"path":[4,0,3,9,2,10],"span":[661,4,29],"leadingComments":" Memory estimate rating assigned to the device.\n"},{"path":[4,0,3,9,2,10,5],"span":[661,4,9]},{"path":[4,0,3,9,2,10,1],"span":[661,10,23]},{"path":[4,0,3,9,2,10,3],"span":[661,26,28]},{"path":[4,0,4,2],"span":[665,2,677,3],"leadingComments":" Enumerates `Cross-Origin-Resource-Policy` settings.\n"},{"path":[4,0,4,2,1],"span":[665,7,32]},{"path":[4,0,4,2,2,0],"span":[667,4,45],"leadingComments":" Unknown or unrecognized cross-origin resource policy.\n"},{"path":[4,0,4,2,2,0,1],"span":[667,4,40]},{"path":[4,0,4,2,2,0,2],"span":[667,43,44]},{"path":[4,0,4,2,2,1],"span":[670,4,18],"leadingComments":" `same-site` resource policy.\n"},{"path":[4,0,4,2,2,1,1],"span":[670,4,13]},{"path":[4,0,4,2,2,1,2],"span":[670,16,17]},{"path":[4,0,4,2,2,2],"span":[673,4,20],"leadingComments":" `same-origin` resource policy.\n"},{"path":[4,0,4,2,2,2,1],"span":[673,4,15]},{"path":[4,0,4,2,2,2,2],"span":[673,18,19]},{"path":[4,0,4,2,2,3],"span":[676,4,21],"leadingComments":" `cross-origin` resource policy.\n"},{"path":[4,0,4,2,2,3,1],"span":[676,4,16]},{"path":[4,0,4,2,2,3,2],"span":[676,19,20]},{"path":[4,0,4,3],"span":[680,2,689,3],"leadingComments":" Specifies a policy to apply via the `X-Frame-Options` header.\n"},{"path":[4,0,4,3,1],"span":[680,7,20]},{"path":[4,0,4,3,2,0],"span":[682,4,31],"leadingComments":" Unknown, or default, framing policy.\n"},{"path":[4,0,4,3,2,0,1],"span":[682,4,26]},{"path":[4,0,4,3,2,0,2],"span":[682,29,30]},{"path":[4,0,4,3,2,1],"span":[685,4,19],"leadingComments":" Allow frames from the same origin.\n"},{"path":[4,0,4,3,2,1,1],"span":[685,4,14]},{"path":[4,0,4,3,2,1,2],"span":[685,17,18]},{"path":[4,0,4,3,2,2],"span":[688,4,13],"leadingComments":" Deny all frames.\n"},{"path":[4,0,4,3,2,2,1],"span":[688,4,8]},{"path":[4,0,4,3,2,2,2],"span":[688,11,12]},{"path":[4,0,4,4],"span":[692,2,726,3],"leadingComments":" Specifies a policy to apply via the `Referrer-Policy` header. All policy docs come from MDN.\n"},{"path":[4,0,4,4,1],"span":[692,7,21]},{"path":[4,0,4,4,2,0],"span":[694,4,32],"leadingComments":" Default referrer policy - i.e. empty.\n"},{"path":[4,0,4,4,2,0,1],"span":[694,4,27]},{"path":[4,0,4,4,2,0,2],"span":[694,30,31]},{"path":[4,0,4,4,2,1],"span":[697,4,20],"leadingComments":" The Referer header will be omitted entirely. No referrer information is sent along with requests.\n"},{"path":[4,0,4,4,2,1,1],"span":[697,4,15]},{"path":[4,0,4,4,2,1,2],"span":[697,18,19]},{"path":[4,0,4,4,2,2],"span":[702,4,35],"leadingComments":" This is the default behavior if no policy is specified, or if the provided value is invalid. The origin, path,\n and querystring of the URL are sent as a referrer when the protocol security level stays the same (HTTP→HTTP,\n HTTPS→HTTPS) or improves (HTTP→HTTPS), but isn't sent to less secure destinations (HTTPS→HTTP).\n"},{"path":[4,0,4,4,2,2,1],"span":[702,4,30]},{"path":[4,0,4,4,2,2,2],"span":[702,33,34]},{"path":[4,0,4,4,2,3],"span":[706,4,15],"leadingComments":" Only send the origin of the document as the referrer. For example, a document at https://example.com/page.html\n will send the referrer https://example.com/.\n"},{"path":[4,0,4,4,2,3,1],"span":[706,4,10]},{"path":[4,0,4,4,2,3,2],"span":[706,13,14]},{"path":[4,0,4,4,2,4],"span":[710,4,33],"leadingComments":" Send the origin, path, and query string when performing a same-origin request, but only send the origin of the\n document for other cases.\n"},{"path":[4,0,4,4,2,4,1],"span":[710,4,28]},{"path":[4,0,4,4,2,4,2],"span":[710,31,32]},{"path":[4,0,4,4,2,5],"span":[713,4,13],"leadingComments":" A referrer will be sent for same-site origins, but cross-origin requests will send no referrer information.\n"},{"path":[4,0,4,4,2,5,1],"span":[713,4,8]},{"path":[4,0,4,4,2,5,2],"span":[713,11,12]},{"path":[4,0,4,4,2,6],"span":[717,4,22],"leadingComments":" Only send the origin of the document as the referrer when the protocol security level stays the same\n (HTTPS→HTTPS), but don't send it to a less secure destination (HTTPS→HTTP).\n"},{"path":[4,0,4,4,2,6,1],"span":[717,4,17]},{"path":[4,0,4,4,2,6,2],"span":[717,20,21]},{"path":[4,0,4,4,2,7],"span":[722,4,40],"leadingComments":" Send the origin, path, and querystring when performing a same-origin request, only send the origin when the\n protocol security level stays the same while performing a cross-origin request (HTTPS→HTTPS), and send no header\n to any less-secure destinations (HTTPS→HTTP).\n"},{"path":[4,0,4,4,2,7,1],"span":[722,4,35]},{"path":[4,0,4,4,2,7,2],"span":[722,38,39]},{"path":[4,0,4,4,2,8],"span":[725,4,19],"leadingComments":" Send the origin, path, and query string when performing any request, regardless of security.\n"},{"path":[4,0,4,4,2,8,1],"span":[725,4,14]},{"path":[4,0,4,4,2,8,2],"span":[725,17,18]},{"path":[4,0,3,10],"span":[729,2,738,3],"leadingComments":" Specifies custom response headers to affix to the request.\n"},{"path":[4,0,3,10,1],"span":[729,10,24]},{"path":[4,0,3,10,2,0],"span":[731,4,20],"leadingComments":" Custom header name.\n"},{"path":[4,0,3,10,2,0,5],"span":[731,4,10]},{"path":[4,0,3,10,2,0,1],"span":[731,11,15]},{"path":[4,0,3,10,2,0,3],"span":[731,18,19]},{"path":[4,0,3,10,2,1],"span":[734,4,21],"leadingComments":" Custom header value.\n"},{"path":[4,0,3,10,2,1,5],"span":[734,4,10]},{"path":[4,0,3,10,2,1,1],"span":[734,11,16]},{"path":[4,0,3,10,2,1,3],"span":[734,19,20]},{"path":[4,0,3,10,2,2],"span":[737,4,19],"leadingComments":" Force-apply the header, even if an error page is served, or duplicates exist.\n"},{"path":[4,0,3,10,2,2,5],"span":[737,4,8]},{"path":[4,0,3,10,2,2,1],"span":[737,9,14]},{"path":[4,0,3,10,2,2,3],"span":[737,17,18]},{"path":[4,0,2,0],"span":[741,2,20],"leadingComments":" Metadata definitions for this web page render context.\n"},{"path":[4,0,2,0,6],"span":[741,2,10]},{"path":[4,0,2,0,1],"span":[741,11,15]},{"path":[4,0,2,0,3],"span":[741,18,19]},{"path":[4,0,2,1],"span":[744,2,20],"leadingComments":" CSS definitions and lifted code for the page head.\n"},{"path":[4,0,2,1,6],"span":[744,2,8]},{"path":[4,0,2,1,1],"span":[744,9,15]},{"path":[4,0,2,1,3],"span":[744,18,19]},{"path":[4,0,2,2],"span":[747,2,18],"leadingComments":" Fonts to include/load on the page.\n"},{"path":[4,0,2,2,6],"span":[747,2,7]},{"path":[4,0,2,2,1],"span":[747,8,13]},{"path":[4,0,2,2,3],"span":[747,16,17]},{"path":[4,0,2,3],"span":[750,2,22],"leadingComments":" Scripts to include on the page or lift into the head.\n"},{"path":[4,0,2,3,6],"span":[750,2,9]},{"path":[4,0,2,3,1],"span":[750,10,17]},{"path":[4,0,2,3,3],"span":[750,20,21]},{"path":[4,0,2,4],"span":[753,2,27],"leadingComments":" Application manifest for a given page or web app.\n"},{"path":[4,0,2,4,6],"span":[753,2,13]},{"path":[4,0,2,4,1],"span":[753,14,22]},{"path":[4,0,2,4,3],"span":[753,25,26]},{"path":[4,0,2,5],"span":[756,2,23],"leadingComments":" `ETag` information to enclose with this page, when rendered.\n"},{"path":[4,0,2,5,6],"span":[756,2,13]},{"path":[4,0,2,5,1],"span":[756,14,18]},{"path":[4,0,2,5,3],"span":[756,21,22]},{"path":[4,0,2,6],"span":[759,2,29],"leadingComments":" Specifies HTTP cookies to affix to the response associated with this context.\n"},{"path":[4,0,2,6,4],"span":[759,2,10]},{"path":[4,0,2,6,6],"span":[759,11,17]},{"path":[4,0,2,6,1],"span":[759,18,24]},{"path":[4,0,2,6,3],"span":[759,27,28]},{"path":[4,0,2,7],"span":[762,2,37],"leadingComments":" Custom headers to affix to the response associated with this context.\n"},{"path":[4,0,2,7,4],"span":[762,2,10]},{"path":[4,0,2,7,6],"span":[762,11,25]},{"path":[4,0,2,7,1],"span":[762,26,32]},{"path":[4,0,2,7,3],"span":[762,35,36]},{"path":[4,0,2,8],"span":[765,2,28],"leadingComments":" Set of HTTP request headers which cause this response to vary.\n"},{"path":[4,0,2,8,4],"span":[765,2,10]},{"path":[4,0,2,8,5],"span":[765,11,17]},{"path":[4,0,2,8,1],"span":[765,18,22]},{"path":[4,0,2,8,3],"span":[765,25,27]},{"path":[4,0,2,9],"span":[768,2,23],"leadingComments":" Language to send in the `Content-Language` header.\n"},{"path":[4,0,2,9,5],"span":[768,2,8]},{"path":[4,0,2,9,1],"span":[768,9,17]},{"path":[4,0,2,9,3],"span":[768,20,22]},{"path":[4,0,2,10],"span":[771,2,25],"leadingComments":" Information provided by client-indicated hints.\n"},{"path":[4,0,2,10,6],"span":[771,2,13]},{"path":[4,0,2,10,1],"span":[771,14,19]},{"path":[4,0,2,10,3],"span":[771,22,24]},{"path":[4,0,2,11],"span":[774,2,38],"leadingComments":" Specifies feature policies for this HTTP cycle.\n"},{"path":[4,0,2,11,4],"span":[774,2,10]},{"path":[4,0,2,11,5],"span":[774,11,17]},{"path":[4,0,2,11,1],"span":[774,18,32]},{"path":[4,0,2,11,3],"span":[774,35,37]},{"path":[4,0,2,12],"span":[777,2,36],"leadingComments":" Specifies options when a page is referenced as a frame.\n"},{"path":[4,0,2,12,6],"span":[777,2,15]},{"path":[4,0,2,12,1],"span":[777,16,30]},{"path":[4,0,2,12,3],"span":[777,33,35]},{"path":[4,0,2,13],"span":[780,2,33],"leadingComments":" Specifies that the `nosniff` flag should be included in a `X-Content-Type-Options` header.\n"},{"path":[4,0,2,13,5],"span":[780,2,6]},{"path":[4,0,2,13,1],"span":[780,7,27]},{"path":[4,0,2,13,3],"span":[780,30,32]},{"path":[4,0,2,14],"span":[783,2,61],"leadingComments":" Specifies the selected CDN prefix to use.\n"},{"path":[4,0,2,14,6],"span":[783,2,44]},{"path":[4,0,2,14,1],"span":[783,45,55]},{"path":[4,0,2,14,3],"span":[783,58,60]},{"path":[4,0,2,15],"span":[786,2,36],"leadingComments":" Specifies hostnames to pre-load DNS records for.\n"},{"path":[4,0,2,15,4],"span":[786,2,10]},{"path":[4,0,2,15,5],"span":[786,11,17]},{"path":[4,0,2,15,1],"span":[786,18,30]},{"path":[4,0,2,15,3],"span":[786,33,35]},{"path":[4,0,2,16],"span":[789,2,34],"leadingComments":" Specifies hostnames to pre-connect to.\n"},{"path":[4,0,2,16,4],"span":[789,2,10]},{"path":[4,0,2,16,5],"span":[789,11,17]},{"path":[4,0,2,16,1],"span":[789,18,28]},{"path":[4,0,2,16,3],"span":[789,31,33]},{"path":[4,0,2,17],"span":[792,2,29],"leadingComments":" Old-style Cross-Site Scripting vulnerability protection policy.\n"},{"path":[4,0,2,17,5],"span":[792,2,8]},{"path":[4,0,2,17,1],"span":[792,9,23]},{"path":[4,0,2,17,3],"span":[792,26,28]},{"path":[4,0,2,18],"span":[795,2,38],"leadingComments":" Specifies the `Referrer-Policy` to apply to this HTTP cycle, as applicable.\n"},{"path":[4,0,2,18,6],"span":[795,2,16]},{"path":[4,0,2,18,1],"span":[795,17,32]},{"path":[4,0,2,18,3],"span":[795,35,37]}]},"syntax":"proto3","bufExtension":{"isImport":false,"isSyntaxUnspecified":false}},{"name":"elide/structs/bloom.proto","package":"elide.structs","dependency":["elide/crypto/crypto.proto","elide/model/model.proto"],"messageType":[{"name":"BloomFilter","field":[{"name":"algorithm","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".elide.crypto.HashAlgorithm","jsonName":"algorithm"},{"name":"rounds","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_UINT32","jsonName":"rounds"},{"name":"count","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_UINT64","jsonName":"count"},{"name":"limit","number":4,"label":"LABEL_OPTIONAL","type":"TYPE_UINT64","jsonName":"limit"},{"name":"layer","number":5,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".elide.structs.BloomFilter.FilterLayer","jsonName":"layer"}],"nestedType":[{"name":"FilterLayer","field":[{"name":"bitset","number":2,"label":"LABEL_REPEATED","type":"TYPE_FIXED64","jsonName":"bitset"},{"name":"count","number":4,"label":"LABEL_REPEATED","type":"TYPE_UINT64","jsonName":"count"}]}],"options":{"[elide.model.role]":"WIRE"}}],"options":{"javaPackage":"tools.elide.struct","javaMultipleFiles":true,"javaStringCheckUtf8":true,"optimizeFor":"SPEED","goPackage":"github.com/elide-tools/elide/struct;struct","ccEnableArenas":true,"objcClassPrefix":"ELD","csharpNamespace":"Elide.Struct","swiftPrefix":"Elide","phpClassPrefix":"ELD"},"sourceCodeInfo":{"location":[{"span":[17,0,80,1]},{"path":[12],"span":[17,0,18],"leadingComments":"\n Specifies a structure for use as a lightweight bloom-filter in protocol buffers. This message must be processed with\n special care, by runtime utilities in each language.\n","leadingDetachedComments":["\n Copyright © 2022, The Elide Framework Authors. All rights reserved.\n\n The Gust/Elide framework and tools, and all associated source or object computer code, except where otherwise noted,\n are licensed under the Zero Prosperity license, which is enclosed in this repository, in the file LICENSE.txt. Use of\n this code in object or source form requires and implies consent and agreement to that license in principle and\n practice. Source or object code not listing this header, or unless specified otherwise, remain the property of\n Elide LLC and its suppliers, if any. The intellectual and technical concepts contained herein are proprietary to\n Elide LLC and its suppliers and may be covered by U.S. and Foreign Patents, or patents in process, and are protected\n by trade secret and copyright law. Dissemination of this information, or reproduction of this material, in any form,\n is strictly forbidden except in adherence with assigned license requirements.\n"]},{"path":[2],"span":[18,0,22]},{"path":[8],"span":[20,0,28]},{"path":[8,9],"span":[20,0,28]},{"path":[8],"span":[21,0,31]},{"path":[8,31],"span":[21,0,31]},{"path":[8],"span":[22,0,34]},{"path":[8,10],"span":[22,0,34]},{"path":[8],"span":[23,0,37]},{"path":[8,27],"span":[23,0,37]},{"path":[8],"span":[24,0,32]},{"path":[8,40],"span":[24,0,32]},{"path":[8],"span":[25,0,30]},{"path":[8,39],"span":[25,0,30]},{"path":[8],"span":[26,0,33]},{"path":[8,36],"span":[26,0,33]},{"path":[8],"span":[27,0,43]},{"path":[8,1],"span":[27,0,43]},{"path":[8],"span":[28,0,41]},{"path":[8,37],"span":[28,0,41]},{"path":[8],"span":[29,0,65]},{"path":[8,11],"span":[29,0,65]},{"path":[3,0],"span":[31,0,35]},{"path":[3,1],"span":[32,0,33]},{"path":[4,0],"span":[49,0,80,1],"leadingComments":" Defines a structure that is operable as a 1-to-n-layer Bloom filter. NIST (the National Institute of Standards and\n Technology) defines a *\"Bloom filter\"* as a \"data structure with a probabilistic algorithm to quickly test membership\n in a large set using multiple hash functions into a single array of bits.\"\n\n In essence, a Bloom filter is a very compact set of data, which operates kind of like a cheese cloth. For each unique\n data fingerprint applied to the filter, you can imagine throwing colored die at the cheese cloth - what you end up\n with is some blend of colors, which is entirely unique and ephemeral, having been constituted entirely by the colors\n you chose, and the exact parameters of how you threw them. Albeit a contrived example, one could then imagine simply\n examining the result of your work to determine the presence of different colors.\n\n Bloom filters work the same way. Since their invention in by Burton Howard Bloom in 1970, many exotic forms of Bloom\n filters have shown up, a few of which this structure supports. For example, one may choose to enhance regular filters\n with the count of items considered in the filter, making it a *Counting Bloom filter*. Or, one may choose to combine\n multiple filters into one effective filter, which is referred to as a *Layered Bloom filter*.\n"},{"path":[4,0,1],"span":[49,8,19]},{"path":[4,0,7],"span":[50,2,29]},{"path":[4,0,7,6000],"span":[50,2,29]},{"path":[4,0,3,0],"span":[54,2,61,3],"leadingComments":" Specifies a layer in a multi-layer Bloom filter. If no more than 1 layer is specified, the filter is a simple\n single-layer bit set (also known as a regular Bloom filter).\n"},{"path":[4,0,3,0,1],"span":[54,10,21]},{"path":[4,0,3,0,2,0],"span":[56,4,32],"leadingComments":" Raw bit sets for each layer of the filter.\n"},{"path":[4,0,3,0,2,0,4],"span":[56,4,12]},{"path":[4,0,3,0,2,0,5],"span":[56,13,20]},{"path":[4,0,3,0,2,0,1],"span":[56,21,27]},{"path":[4,0,3,0,2,0,3],"span":[56,30,31]},{"path":[4,0,3,0,2,1],"span":[60,4,30],"leadingComments":" Count of items for each bucket in this filter layer. Only present if this is a *Counting Bloom filter*, in which\n the bit set indicates presence for each bucket and the count indicates the value for each bucket.\n"},{"path":[4,0,3,0,2,1,4],"span":[60,4,12]},{"path":[4,0,3,0,2,1,5],"span":[60,13,19]},{"path":[4,0,3,0,2,1,1],"span":[60,20,25]},{"path":[4,0,3,0,2,1,3],"span":[60,28,29]},{"path":[4,0,2,0],"span":[65,2,37],"leadingComments":" Hash algorithm in use for this Bloom filter. This must be considered an immutable value for a constituted filter,\n otherwise the underlying data may be rendered unusable.\n"},{"path":[4,0,2,0,6],"span":[65,2,22]},{"path":[4,0,2,0,1],"span":[65,23,32]},{"path":[4,0,2,0,3],"span":[65,35,36]},{"path":[4,0,2,1],"span":[68,2,20],"leadingComments":" Number of hash rounds to apply when adding data to this filter.\n"},{"path":[4,0,2,1,5],"span":[68,2,8]},{"path":[4,0,2,1,1],"span":[68,9,15]},{"path":[4,0,2,1,3],"span":[68,18,19]},{"path":[4,0,2,2],"span":[71,2,19],"leadingComments":" Number of items in the filter, across all layers.\n"},{"path":[4,0,2,2,5],"span":[71,2,8]},{"path":[4,0,2,2,1],"span":[71,9,14]},{"path":[4,0,2,2,3],"span":[71,17,18]},{"path":[4,0,2,3],"span":[74,2,19],"leadingComments":" Limit setting to enforce for this Bloom filter, before re-calculating contents. Optional.\n"},{"path":[4,0,2,3,5],"span":[74,2,8]},{"path":[4,0,2,3,1],"span":[74,9,14]},{"path":[4,0,2,3,3],"span":[74,17,18]},{"path":[4,0,2,4],"span":[79,2,33],"leadingComments":" Specifies each layer of this Bloom filter structure. If no more than one layer is present, the structure represents\n a simple, single-layer regular Bloom filter. If more than one layer are present, the structure represents a multi-\n layer (*Layered*) Bloom filter.\n"},{"path":[4,0,2,4,4],"span":[79,2,10]},{"path":[4,0,2,4,6],"span":[79,11,22]},{"path":[4,0,2,4,1],"span":[79,23,28]},{"path":[4,0,2,4,3],"span":[79,31,32]}]},"syntax":"proto3","bufExtension":{"isImport":false,"isSyntaxUnspecified":false}},{"name":"elide/assets/bundle.proto","package":"elide.assets","dependency":["google/protobuf/timestamp.proto","elide/crypto/crypto.proto","elide/data/data.proto","elide/model/model.proto","elide/page/page.proto","elide/structs/bloom.proto"],"messageType":[{"name":"AssetBundle","field":[{"name":"version","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_UINT32","jsonName":"version"},{"name":"settings","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.assets.AssetBundle.BundlerSettings","jsonName":"settings"},{"name":"generated","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".google.protobuf.Timestamp","jsonName":"generated"},{"name":"digest","number":4,"label":"LABEL_OPTIONAL","type":"TYPE_BYTES","jsonName":"digest"},{"name":"styles","number":5,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".elide.assets.AssetBundle.StylesEntry","jsonName":"styles"},{"name":"scripts","number":6,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".elide.assets.AssetBundle.ScriptsEntry","jsonName":"scripts"},{"name":"generic","number":7,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".elide.assets.AssetBundle.GenericEntry","jsonName":"generic"},{"name":"asset","number":8,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".elide.assets.AssetBundle.AssetContent","jsonName":"asset"}],"nestedType":[{"name":"DigestSettings","field":[{"name":"algorithm","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".elide.crypto.HashAlgorithm","jsonName":"algorithm"},{"name":"tail","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_UINT32","jsonName":"tail"},{"name":"rounds","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_UINT32","jsonName":"rounds"}]},{"name":"RewriteMap","field":[{"name":"file","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"file"},{"name":"map","number":2,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".elide.assets.AssetBundle.RewriteMap.MapEntry","jsonName":"map"}],"nestedType":[{"name":"MapEntry","field":[{"name":"key","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"key"},{"name":"value","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"value"}],"options":{"mapEntry":true}}]},{"name":"BundlerSettings","field":[{"name":"minify","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"minify"},{"name":"prepack","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"prepack"},{"name":"rewriting","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"rewriting"},{"name":"compression","number":4,"label":"LABEL_REPEATED","type":"TYPE_ENUM","typeName":".elide.data.CompressionMode","jsonName":"compression"},{"name":"digest_settings","number":5,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.assets.AssetBundle.DigestSettings","jsonName":"digestSettings"}]},{"name":"AssetDependencies","field":[{"name":"direct","number":1,"label":"LABEL_REPEATED","type":"TYPE_STRING","jsonName":"direct"},{"name":"transitive","number":2,"label":"LABEL_REPEATED","type":"TYPE_STRING","jsonName":"transitive"},{"name":"mask","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.structs.BloomFilter","jsonName":"mask"}]},{"name":"StyleBundle","field":[{"name":"module","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"module"},{"name":"rewrite_map","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.assets.AssetBundle.RewriteMap","jsonName":"rewriteMap"},{"name":"dependencies","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.assets.AssetBundle.AssetDependencies","jsonName":"dependencies"},{"name":"asset","number":4,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".elide.assets.AssetBundle.StyleBundle.StyleAsset","jsonName":"asset"},{"name":"compressable","number":5,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"compressable"},{"name":"cacheable","number":6,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"cacheable"}],"nestedType":[{"name":"StyleAsset","field":[{"name":"token","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"token"},{"name":"filename","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"filename"},{"name":"stylesheet","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.page.Context.Styles.Stylesheet","jsonName":"stylesheet"},{"name":"renaming","number":4,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"renaming"}]}]},{"name":"ScriptBundle","field":[{"name":"module","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"module"},{"name":"asset","number":2,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".elide.assets.AssetBundle.ScriptBundle.ScriptAsset","jsonName":"asset"},{"name":"dependencies","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.assets.AssetBundle.AssetDependencies","jsonName":"dependencies"},{"name":"compressable","number":4,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"compressable"},{"name":"cacheable","number":5,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"cacheable"},{"name":"external","number":6,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"external"}],"nestedType":[{"name":"ScriptAsset","field":[{"name":"token","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"token"},{"name":"filename","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"filename"},{"name":"script","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.page.Context.Scripts.JavaScript","jsonName":"script"}]}]},{"name":"GenericBundle","field":[{"name":"module","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"module"},{"name":"filename","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"filename"},{"name":"token","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"token"},{"name":"variant","number":4,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".elide.data.CompressedData","jsonName":"variant"},{"name":"compressable","number":5,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"compressable"},{"name":"cacheable","number":6,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"cacheable"},{"name":"external","number":7,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"external"}]},{"name":"AssetContent","field":[{"name":"module","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"module"},{"name":"filename","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"filename"},{"name":"token","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"token"},{"name":"variant","number":4,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".elide.data.CompressedData","jsonName":"variant"}]},{"name":"StylesEntry","field":[{"name":"key","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"key"},{"name":"value","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.assets.AssetBundle.StyleBundle","jsonName":"value"}],"options":{"mapEntry":true}},{"name":"ScriptsEntry","field":[{"name":"key","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"key"},{"name":"value","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.assets.AssetBundle.ScriptBundle","jsonName":"value"}],"options":{"mapEntry":true}},{"name":"GenericEntry","field":[{"name":"key","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"key"},{"name":"value","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.assets.AssetBundle.GenericBundle","jsonName":"value"}],"options":{"mapEntry":true}}],"options":{"[elide.model.role]":"WIRE"}}],"enumType":[{"name":"ManifestFormat","value":[{"name":"MANIFEST_FORMAT_UNSPECIFIED","number":0},{"name":"BINARY","number":1},{"name":"JSON","number":2},{"name":"TEXT","number":3}]}],"options":{"javaPackage":"tools.elide.assets","javaMultipleFiles":true,"javaStringCheckUtf8":true,"optimizeFor":"CODE_SIZE","ccEnableArenas":true,"objcClassPrefix":"ELD","csharpNamespace":"Elide.Assets","swiftPrefix":"Elide","phpClassPrefix":"ELD"},"sourceCodeInfo":{"location":[{"span":[17,0,266,1]},{"path":[12],"span":[17,0,18],"leadingComments":"\n Specifies structures used to define the notion of a \"asset bundle,\" which holds configuration and inline data that,\n together with server logic, enable automatic asset references and loading.\n","leadingDetachedComments":["\n Copyright © 2022, The Elide Framework Authors. All rights reserved.\n\n The Gust/Elide framework and tools, and all associated source or object computer code, except where otherwise noted,\n are licensed under the Zero Prosperity license, which is enclosed in this repository, in the file LICENSE.txt. Use of\n this code in object or source form requires and implies consent and agreement to that license in principle and\n practice. Source or object code not listing this header, or unless specified otherwise, remain the property of\n Elide LLC and its suppliers, if any. The intellectual and technical concepts contained herein are proprietary to\n Elide LLC and its suppliers and may be covered by U.S. and Foreign Patents, or patents in process, and are protected\n by trade secret and copyright law. Dissemination of this information, or reproduction of this material, in any form,\n is strictly forbidden except in adherence with assigned license requirements.\n"]},{"path":[2],"span":[18,0,21]},{"path":[8],"span":[20,0,32]},{"path":[8,9],"span":[20,0,32]},{"path":[8],"span":[21,0,31]},{"path":[8,31],"span":[21,0,31]},{"path":[8],"span":[22,0,34]},{"path":[8,10],"span":[22,0,34]},{"path":[8],"span":[23,0,37]},{"path":[8,27],"span":[23,0,37]},{"path":[8],"span":[24,0,32]},{"path":[8,40],"span":[24,0,32]},{"path":[8],"span":[25,0,30]},{"path":[8,39],"span":[25,0,30]},{"path":[8],"span":[26,0,33]},{"path":[8,36],"span":[26,0,33]},{"path":[8],"span":[27,0,43]},{"path":[8,1],"span":[27,0,43]},{"path":[8],"span":[28,0,41]},{"path":[8,37],"span":[28,0,41]},{"path":[3,0],"span":[30,0,41]},{"path":[3,1],"span":[32,0,35]},{"path":[3,2],"span":[33,0,31]},{"path":[3,3],"span":[34,0,33]},{"path":[3,4],"span":[35,0,31]},{"path":[3,5],"span":[36,0,35]},{"path":[5,0],"span":[41,0,53,1],"leadingComments":" Enumerates supported asset manifest formats. These are all powered by Protocol Buffers' encoding tools. For maximum\n performance, use the binary format.\n"},{"path":[5,0,1],"span":[41,5,19]},{"path":[5,0,2,0],"span":[43,2,34],"leadingComments":" The manifest format was unspecified or unrecognized; this value should not be used by regular code.\n"},{"path":[5,0,2,0,1],"span":[43,2,29]},{"path":[5,0,2,0,2],"span":[43,32,33]},{"path":[5,0,2,1],"span":[46,2,13],"leadingComments":" Specifies a binary-encoded asset manifest.\n"},{"path":[5,0,2,1,1],"span":[46,2,8]},{"path":[5,0,2,1,2],"span":[46,11,12]},{"path":[5,0,2,2],"span":[49,2,11],"leadingComments":" Specifies a JSON-encoded asset manifest.\n"},{"path":[5,0,2,2,1],"span":[49,2,6]},{"path":[5,0,2,2,2],"span":[49,9,10]},{"path":[5,0,2,3],"span":[52,2,11],"leadingComments":" Specifies a text-encoded asset manifest.\n"},{"path":[5,0,2,3,1],"span":[52,2,6]},{"path":[5,0,2,3,2],"span":[52,9,10]},{"path":[4,0],"span":[63,0,266,1],"leadingComments":" Defines the structure of an \"asset bundle,\" which keeps track of frontend assets for an application. This manifest is\n generally consumed in binary-proto form by the backend systems running the app, so it can load frontend code and map\n module paths to annotations affixed to controllers.\n\n Assets enclosed in the asset manifest are referenced by their \"module name,\" which is a dotted string path uniquely\n scoping a given stylesheet or script. The set of sources associated with the module name are loaded in order, with\n any applicable rewrite maps or other settings applying during output.\n"},{"path":[4,0,1],"span":[63,8,19]},{"path":[4,0,7],"span":[64,2,29]},{"path":[4,0,7,6000],"span":[64,2,29]},{"path":[4,0,3,0],"span":[68,2,77,3],"leadingComments":" Specifies settings related to cryptographic asset digestion. This includes the algorithm in use, and the length of\n the hash to take for the resulting token.\n"},{"path":[4,0,3,0,1],"span":[68,10,24]},{"path":[4,0,3,0,2,0],"span":[70,4,39],"leadingComments":" Hash algorithm in use for asset digestion.\n"},{"path":[4,0,3,0,2,0,6],"span":[70,4,24]},{"path":[4,0,3,0,2,0,1],"span":[70,25,34]},{"path":[4,0,3,0,2,0,3],"span":[70,37,38]},{"path":[4,0,3,0,2,1],"span":[73,4,20],"leadingComments":" Number of characters to pluck from the tail of the hash.\n"},{"path":[4,0,3,0,2,1,5],"span":[73,4,10]},{"path":[4,0,3,0,2,1,1],"span":[73,11,15]},{"path":[4,0,3,0,2,1,3],"span":[73,18,19]},{"path":[4,0,3,0,2,2],"span":[76,4,22],"leadingComments":" Number of rounds to perform. Defaults to `1`.\n"},{"path":[4,0,3,0,2,2,5],"span":[76,4,10]},{"path":[4,0,3,0,2,2,1],"span":[76,11,17]},{"path":[4,0,3,0,2,2,3],"span":[76,20,21]},{"path":[4,0,3,1],"span":[81,2,87,3],"leadingComments":" Specifies a map of style symbols (usually classes and/or IDs) that should be rewritten on the fly, and their target\n rewrite values. If a rewrite map is present and active, it is used during serving to line styles up with the DOM.\n"},{"path":[4,0,3,1,1],"span":[81,10,20]},{"path":[4,0,3,1,2,0],"span":[83,4,20],"leadingComments":" File this rewrite map was originally loaded from.\n"},{"path":[4,0,3,1,2,0,5],"span":[83,4,10]},{"path":[4,0,3,1,2,0,1],"span":[83,11,15]},{"path":[4,0,3,1,2,0,3],"span":[83,18,19]},{"path":[4,0,3,1,2,1],"span":[86,4,32],"leadingComments":" Map of symbols to their rewritten values.\n"},{"path":[4,0,3,1,2,1,6],"span":[86,4,23]},{"path":[4,0,3,1,2,1,1],"span":[86,24,27]},{"path":[4,0,3,1,2,1,3],"span":[86,30,31]},{"path":[4,0,3,2],"span":[91,2,108,3],"leadingComments":" Specifies settings which were active at the time the bundle was generated, and some of which may extend to the\n bundle's use at runtime.\n"},{"path":[4,0,3,2,1],"span":[91,10,25]},{"path":[4,0,3,2,2,0],"span":[93,4,20],"leadingComments":" Specifies whether minification was enabled, and/or should be enabled.\n"},{"path":[4,0,3,2,2,0,5],"span":[93,4,8]},{"path":[4,0,3,2,2,0,1],"span":[93,9,15]},{"path":[4,0,3,2,2,0,3],"span":[93,18,19]},{"path":[4,0,3,2,2,1],"span":[96,4,21],"leadingComments":" Specifies whether JavaScript pre-packing was enabled, and/or should be enabled.\n"},{"path":[4,0,3,2,2,1,5],"span":[96,4,8]},{"path":[4,0,3,2,2,1,1],"span":[96,9,16]},{"path":[4,0,3,2,2,1,3],"span":[96,19,20]},{"path":[4,0,3,2,2,2],"span":[99,4,23],"leadingComments":" Specifies whether assets participating in style rewriting (not to be confused with minification).\n"},{"path":[4,0,3,2,2,2,5],"span":[99,4,8]},{"path":[4,0,3,2,2,2,1],"span":[99,9,18]},{"path":[4,0,3,2,2,2,3],"span":[99,21,22]},{"path":[4,0,3,2,2,3],"span":[103,4,50],"leadingComments":" Enabled compression algorithms. If this property is set, there may be compressed variants for each asset,\n potentially depending on whether the compressed asset variant saved space over the wire.\n"},{"path":[4,0,3,2,2,3,4],"span":[103,4,12]},{"path":[4,0,3,2,2,3,6],"span":[103,13,33]},{"path":[4,0,3,2,2,3,1],"span":[103,34,45]},{"path":[4,0,3,2,2,3,3],"span":[103,48,49]},{"path":[4,0,3,2,2,4],"span":[107,4,39],"leadingComments":" Digest algorithm settings in use to calculate chunk tokens. These tokens are used to address pre-compressed asset\n content, and are used to address assets dynamically from the server and frontend.\n"},{"path":[4,0,3,2,2,4,6],"span":[107,4,18]},{"path":[4,0,3,2,2,4,1],"span":[107,19,34]},{"path":[4,0,3,2,2,4,3],"span":[107,37,38]},{"path":[4,0,3,3],"span":[112,2,121,3],"leadingComments":" Specifies direct and transitive dependencies for a given asset bundle. This structure is used generically across\n asset types, and refers to dependencies using their asset token.\n"},{"path":[4,0,3,3,1],"span":[112,10,27]},{"path":[4,0,3,3,2,0],"span":[114,4,31],"leadingComments":" Tokens for direct dependencies.\n"},{"path":[4,0,3,3,2,0,4],"span":[114,4,12]},{"path":[4,0,3,3,2,0,5],"span":[114,13,19]},{"path":[4,0,3,3,2,0,1],"span":[114,20,26]},{"path":[4,0,3,3,2,0,3],"span":[114,29,30]},{"path":[4,0,3,3,2,1],"span":[117,4,35],"leadingComments":" Tokens for transitive dependencies.\n"},{"path":[4,0,3,3,2,1,4],"span":[117,4,12]},{"path":[4,0,3,3,2,1,5],"span":[117,13,19]},{"path":[4,0,3,3,2,1,1],"span":[117,20,30]},{"path":[4,0,3,3,2,1,3],"span":[117,33,34]},{"path":[4,0,3,3,2,2],"span":[120,4,33],"leadingComments":" Bitmask filter calculated from the full set of a given asset's dependency tokens.\n"},{"path":[4,0,3,3,2,2,6],"span":[120,4,23]},{"path":[4,0,3,3,2,2,1],"span":[120,24,28]},{"path":[4,0,3,3,2,2,3],"span":[120,31,32]},{"path":[4,0,3,4],"span":[125,2,158,3],"leadingComments":" Specifies a bundle of CSS code, containing one or more stylesheets to be included in an HTML page, and optionally\n one or more style symbol rewrite maps.\n"},{"path":[4,0,3,4,1],"span":[125,10,21]},{"path":[4,0,3,4,3,0],"span":[127,4,139,5],"leadingComments":" Describes the structure of an individual style asset, which is constituent to the bundle that holds it.\n"},{"path":[4,0,3,4,3,0,1],"span":[127,12,22]},{"path":[4,0,3,4,3,0,2,0],"span":[129,6,23],"leadingComments":" Calculated token for this asset, including the asset's content digest.\n"},{"path":[4,0,3,4,3,0,2,0,5],"span":[129,6,12]},{"path":[4,0,3,4,3,0,2,0,1],"span":[129,13,18]},{"path":[4,0,3,4,3,0,2,0,3],"span":[129,21,22]},{"path":[4,0,3,4,3,0,2,1],"span":[132,6,26],"leadingComments":" Original name of the source file, if applicable.\n"},{"path":[4,0,3,4,3,0,2,1,5],"span":[132,6,12]},{"path":[4,0,3,4,3,0,2,1,1],"span":[132,13,21]},{"path":[4,0,3,4,3,0,2,1,3],"span":[132,24,25]},{"path":[4,0,3,4,3,0,2,2],"span":[135,6,52],"leadingComments":" URL and DOM settings for this asset.\n"},{"path":[4,0,3,4,3,0,2,2,6],"span":[135,6,36]},{"path":[4,0,3,4,3,0,2,2,1],"span":[135,37,47]},{"path":[4,0,3,4,3,0,2,2,3],"span":[135,50,51]},{"path":[4,0,3,4,3,0,2,3],"span":[138,6,24],"leadingComments":" Whether a renaming map is available for this stylesheet.\n"},{"path":[4,0,3,4,3,0,2,3,5],"span":[138,6,10]},{"path":[4,0,3,4,3,0,2,3,1],"span":[138,11,19]},{"path":[4,0,3,4,3,0,2,3,3],"span":[138,22,23]},{"path":[4,0,3,4,2,0],"span":[142,4,22],"leadingComments":" Style module name/path.\n"},{"path":[4,0,3,4,2,0,5],"span":[142,4,10]},{"path":[4,0,3,4,2,0,1],"span":[142,11,17]},{"path":[4,0,3,4,2,0,3],"span":[142,20,21]},{"path":[4,0,3,4,2,1],"span":[145,4,31],"leadingComments":" Rewrite maps associated with this bundle, if applicable.\n"},{"path":[4,0,3,4,2,1,6],"span":[145,4,14]},{"path":[4,0,3,4,2,1,1],"span":[145,15,26]},{"path":[4,0,3,4,2,1,3],"span":[145,29,30]},{"path":[4,0,3,4,2,2],"span":[148,4,39],"leadingComments":" Specifies dependencies that must be loaded before this module, if any.\n"},{"path":[4,0,3,4,2,2,6],"span":[148,4,21]},{"path":[4,0,3,4,2,2,1],"span":[148,22,34]},{"path":[4,0,3,4,2,2,3],"span":[148,37,38]},{"path":[4,0,3,4,2,3],"span":[151,4,34],"leadingComments":" Stylesheet sources associated with this bundle. Always non-empty.\n"},{"path":[4,0,3,4,2,3,4],"span":[151,4,12]},{"path":[4,0,3,4,2,3,6],"span":[151,13,23]},{"path":[4,0,3,4,2,3,1],"span":[151,24,29]},{"path":[4,0,3,4,2,3,3],"span":[151,32,33]},{"path":[4,0,3,4,2,4],"span":[154,4,26],"leadingComments":" Whether this asset should be compressed when serving to end-users.\n"},{"path":[4,0,3,4,2,4,5],"span":[154,4,8]},{"path":[4,0,3,4,2,4,1],"span":[154,9,21]},{"path":[4,0,3,4,2,4,3],"span":[154,24,25]},{"path":[4,0,3,4,2,5],"span":[157,4,23],"leadingComments":" Whether this asset should be considered cacheable.\n"},{"path":[4,0,3,4,2,5,5],"span":[157,4,8]},{"path":[4,0,3,4,2,5,1],"span":[157,9,18]},{"path":[4,0,3,4,2,5,3],"span":[157,21,22]},{"path":[4,0,3,5],"span":[162,2,192,3],"leadingComments":" Specifies a bundle of JavaScript code, containing one or more script assets to be included in an HTML page, and\n optionally settings about how to embed the script.\n"},{"path":[4,0,3,5,1],"span":[162,10,22]},{"path":[4,0,3,5,3,0],"span":[164,4,173,5],"leadingComments":" Describes the structure of an individual script asset, which is constituent to the bundle that holds it.\n"},{"path":[4,0,3,5,3,0,1],"span":[164,12,23]},{"path":[4,0,3,5,3,0,2,0],"span":[166,6,23],"leadingComments":" Calculated token for this asset, including the asset's content digest.\n"},{"path":[4,0,3,5,3,0,2,0,5],"span":[166,6,12]},{"path":[4,0,3,5,3,0,2,0,1],"span":[166,13,18]},{"path":[4,0,3,5,3,0,2,0,3],"span":[166,21,22]},{"path":[4,0,3,5,3,0,2,1],"span":[169,6,26],"leadingComments":" Original name of the source file, if applicable.\n"},{"path":[4,0,3,5,3,0,2,1,5],"span":[169,6,12]},{"path":[4,0,3,5,3,0,2,1,1],"span":[169,13,21]},{"path":[4,0,3,5,3,0,2,1,3],"span":[169,24,25]},{"path":[4,0,3,5,3,0,2,2],"span":[172,6,49],"leadingComments":" URL and DOM settings for this asset.\n"},{"path":[4,0,3,5,3,0,2,2,6],"span":[172,6,37]},{"path":[4,0,3,5,3,0,2,2,1],"span":[172,38,44]},{"path":[4,0,3,5,3,0,2,2,3],"span":[172,47,48]},{"path":[4,0,3,5,2,0],"span":[176,4,22],"leadingComments":" Script module name/path.\n"},{"path":[4,0,3,5,2,0,5],"span":[176,4,10]},{"path":[4,0,3,5,2,0,1],"span":[176,11,17]},{"path":[4,0,3,5,2,0,3],"span":[176,20,21]},{"path":[4,0,3,5,2,1],"span":[179,4,35],"leadingComments":" Script code assets associated with this bundle. Always non-empty.\n"},{"path":[4,0,3,5,2,1,4],"span":[179,4,12]},{"path":[4,0,3,5,2,1,6],"span":[179,13,24]},{"path":[4,0,3,5,2,1,1],"span":[179,25,30]},{"path":[4,0,3,5,2,1,3],"span":[179,33,34]},{"path":[4,0,3,5,2,2],"span":[182,4,39],"leadingComments":" Specifies dependencies that must be loaded before this module, if any.\n"},{"path":[4,0,3,5,2,2,6],"span":[182,4,21]},{"path":[4,0,3,5,2,2,1],"span":[182,22,34]},{"path":[4,0,3,5,2,2,3],"span":[182,37,38]},{"path":[4,0,3,5,2,3],"span":[185,4,26],"leadingComments":" Whether this asset should be compressed when serving to end-users.\n"},{"path":[4,0,3,5,2,3,5],"span":[185,4,8]},{"path":[4,0,3,5,2,3,1],"span":[185,9,21]},{"path":[4,0,3,5,2,3,3],"span":[185,24,25]},{"path":[4,0,3,5,2,4],"span":[188,4,23],"leadingComments":" Whether this asset should be considered cacheable.\n"},{"path":[4,0,3,5,2,4,5],"span":[188,4,8]},{"path":[4,0,3,5,2,4,1],"span":[188,9,18]},{"path":[4,0,3,5,2,4,3],"span":[188,21,22]},{"path":[4,0,3,5,2,5],"span":[191,4,22],"leadingComments":" Marked if this asset is external, in which case the described script should be referenced via a script tag.\n"},{"path":[4,0,3,5,2,5,5],"span":[191,4,8]},{"path":[4,0,3,5,2,5,1],"span":[191,9,17]},{"path":[4,0,3,5,2,5,3],"span":[191,20,21]},{"path":[4,0,3,6],"span":[196,2,217,3],"leadingComments":" Describes a generic asset bundle relating to a text asset, or some other generic asset which is otherwise not\n modeled by other available descriptors.\n"},{"path":[4,0,3,6,1],"span":[196,10,23]},{"path":[4,0,3,6,2,0],"span":[198,4,22],"leadingComments":" Generic asset name/path.\n"},{"path":[4,0,3,6,2,0,5],"span":[198,4,10]},{"path":[4,0,3,6,2,0,1],"span":[198,11,17]},{"path":[4,0,3,6,2,0,3],"span":[198,20,21]},{"path":[4,0,3,6,2,1],"span":[201,4,24],"leadingComments":" Original name of the source file, as applicable.\n"},{"path":[4,0,3,6,2,1,5],"span":[201,4,10]},{"path":[4,0,3,6,2,1,1],"span":[201,11,19]},{"path":[4,0,3,6,2,1,3],"span":[201,22,23]},{"path":[4,0,3,6,2,2],"span":[204,4,21],"leadingComments":" Hash token uniquely identifying the content in this module.\n"},{"path":[4,0,3,6,2,2,5],"span":[204,4,10]},{"path":[4,0,3,6,2,2,1],"span":[204,11,16]},{"path":[4,0,3,6,2,2,3],"span":[204,19,20]},{"path":[4,0,3,6,2,3],"span":[207,4,45],"leadingComments":" Specifies each variant of an asset's main content.\n"},{"path":[4,0,3,6,2,3,4],"span":[207,4,12]},{"path":[4,0,3,6,2,3,6],"span":[207,13,32]},{"path":[4,0,3,6,2,3,1],"span":[207,33,40]},{"path":[4,0,3,6,2,3,3],"span":[207,43,44]},{"path":[4,0,3,6,2,4],"span":[210,4,26],"leadingComments":" Whether this asset should be compressed when serving to end-users.\n"},{"path":[4,0,3,6,2,4,5],"span":[210,4,8]},{"path":[4,0,3,6,2,4,1],"span":[210,9,21]},{"path":[4,0,3,6,2,4,3],"span":[210,24,25]},{"path":[4,0,3,6,2,5],"span":[213,4,23],"leadingComments":" Whether this asset should be considered cacheable.\n"},{"path":[4,0,3,6,2,5,5],"span":[213,4,8]},{"path":[4,0,3,6,2,5,1],"span":[213,9,18]},{"path":[4,0,3,6,2,5,3],"span":[213,21,22]},{"path":[4,0,3,6,2,6],"span":[216,4,22],"leadingComments":" Marked if this asset is external, in which case the described stylesheet should be referenced via a link tag.\n"},{"path":[4,0,3,6,2,6,5],"span":[216,4,8]},{"path":[4,0,3,6,2,6,1],"span":[216,9,17]},{"path":[4,0,3,6,2,6,3],"span":[216,20,21]},{"path":[4,0,3,7],"span":[222,2,234,3],"leadingComments":" Specifies full contents for assets, in pre-compressed forms, to be served directly when a compressed representation\n is supported by the invoking browser. These payloads duplicate the original content, which is additionally enclosed\n in the JAR at the path described in this structure.\n"},{"path":[4,0,3,7,1],"span":[222,10,22]},{"path":[4,0,3,7,2,0],"span":[224,4,22],"leadingComments":" Module which this asset is a member of.\n"},{"path":[4,0,3,7,2,0,5],"span":[224,4,10]},{"path":[4,0,3,7,2,0,1],"span":[224,11,17]},{"path":[4,0,3,7,2,0,3],"span":[224,20,21]},{"path":[4,0,3,7,2,1],"span":[227,4,24],"leadingComments":" Original name of the source file.\n"},{"path":[4,0,3,7,2,1,5],"span":[227,4,10]},{"path":[4,0,3,7,2,1,1],"span":[227,11,19]},{"path":[4,0,3,7,2,1,3],"span":[227,22,23]},{"path":[4,0,3,7,2,2],"span":[230,4,21],"leadingComments":" Hash token uniquely identifying the content in this module.\n"},{"path":[4,0,3,7,2,2,5],"span":[230,4,10]},{"path":[4,0,3,7,2,2,1],"span":[230,11,16]},{"path":[4,0,3,7,2,2,3],"span":[230,19,20]},{"path":[4,0,3,7,2,3],"span":[233,4,45],"leadingComments":" Specifies each variant of an asset's main content.\n"},{"path":[4,0,3,7,2,3,4],"span":[233,4,12]},{"path":[4,0,3,7,2,3,6],"span":[233,13,32]},{"path":[4,0,3,7,2,3,1],"span":[233,33,40]},{"path":[4,0,3,7,2,3,3],"span":[233,43,44]},{"path":[4,0,2,0],"span":[238,2,21],"leadingComments":" Version of the tool that produced this manifest. This is used by the tool to understand which asset bundle features\n are supported for a given tool version.\n"},{"path":[4,0,2,0,5],"span":[238,2,8]},{"path":[4,0,2,0,1],"span":[238,9,16]},{"path":[4,0,2,0,3],"span":[238,19,20]},{"path":[4,0,2,1],"span":[242,2,31],"leadingComments":" Bundler settings that were active at the time the bundle was assembled, and some of which may extend to the runtime\n use of the bundle to serve assets.\n"},{"path":[4,0,2,1,6],"span":[242,2,17]},{"path":[4,0,2,1,1],"span":[242,18,26]},{"path":[4,0,2,1,3],"span":[242,29,30]},{"path":[4,0,2,2],"span":[246,2,42],"leadingComments":" Timestamp indicating when this asset manifest was generated. This may be used when calculating `ETags` or when\n checking for updates to the asset bundle itself.\n"},{"path":[4,0,2,2,6],"span":[246,2,27]},{"path":[4,0,2,2,1],"span":[246,28,37]},{"path":[4,0,2,2,3],"span":[246,40,41]},{"path":[4,0,2,3],"span":[250,2,19],"leadingComments":" Raw bytes of a digest matching the algorithm for digests in file names, which represents a unique fingerprint of\n the full asset bundle.\n"},{"path":[4,0,2,3,5],"span":[250,2,7]},{"path":[4,0,2,3,1],"span":[250,8,14]},{"path":[4,0,2,3,3],"span":[250,17,18]},{"path":[4,0,2,4],"span":[254,2,38],"leadingComments":" Set of styles listed in this asset manifest. Like scripts, this is a map of dotted-path module names mapped to\n their stylesheet sources and settings. Generally, the GSS module name is used for stylesheets.\n"},{"path":[4,0,2,4,6],"span":[254,2,26]},{"path":[4,0,2,4,1],"span":[254,27,33]},{"path":[4,0,2,4,3],"span":[254,36,37]},{"path":[4,0,2,5],"span":[258,2,40],"leadingComments":" Set of scripts listed in this asset manifest. Like styles, this is a map of dotted-path module names mapped to\n their script sources and settings. Generally, a Closure module name is used for scripts.\n"},{"path":[4,0,2,5,6],"span":[258,2,27]},{"path":[4,0,2,5,1],"span":[258,28,35]},{"path":[4,0,2,5,3],"span":[258,38,39]},{"path":[4,0,2,6],"span":[261,2,41],"leadingComments":" Generic assets which are mapped within this bundle.\n"},{"path":[4,0,2,6,6],"span":[261,2,28]},{"path":[4,0,2,6,1],"span":[261,29,36]},{"path":[4,0,2,6,3],"span":[261,39,40]},{"path":[4,0,2,7],"span":[265,2,34],"leadingComments":" Inlined asset contents, which specify pre-compressed asset data corresponding to a given CSS or JavaScript code\n bundle. The server may choose to serve this content rather than performing compression on-the-fly.\n"},{"path":[4,0,2,7,4],"span":[265,2,10]},{"path":[4,0,2,7,6],"span":[265,11,23]},{"path":[4,0,2,7,1],"span":[265,24,29]},{"path":[4,0,2,7,3],"span":[265,32,33]}]},"syntax":"proto3","bufExtension":{"isImport":false,"isSyntaxUnspecified":false}},{"name":"elide/assets/embedded.proto","package":"elide.assets","dependency":["google/protobuf/timestamp.proto","elide/model/model.proto","elide/data/data.proto"],"messageType":[{"name":"EmbeddedScriptMetadata","field":[{"name":"javascript","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.assets.EmbeddedScriptMetadata.JsScriptMetadata","oneofIndex":0,"jsonName":"javascript"}],"nestedType":[{"name":"JsScriptMetadata","field":[{"name":"level","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".elide.assets.EmbeddedScriptMetadata.JsScriptMetadata.JsLanguageLevel","jsonName":"level"}],"enumType":[{"name":"JsLanguageLevel","value":[{"name":"JS_LANGUAGE_LEVEL_DEFAULT","number":0},{"name":"ES5","number":1},{"name":"ES6","number":2},{"name":"ES2017","number":3},{"name":"ES2018","number":4},{"name":"ES2019","number":5},{"name":"ES2020","number":6},{"name":"ES2021","number":7},{"name":"ES2022","number":8}]}]}],"oneofDecl":[{"name":"metadata"}]},{"name":"EmbeddedScript","field":[{"name":"module","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"module"},{"name":"filename","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"filename"},{"name":"language","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".elide.assets.EmbeddedScriptLanguage","jsonName":"language"},{"name":"metadata","number":4,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.assets.EmbeddedScriptMetadata","jsonName":"metadata"},{"name":"last_modified","number":5,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".google.protobuf.Timestamp","jsonName":"lastModified"},{"name":"direct_dependency","number":6,"label":"LABEL_REPEATED","type":"TYPE_STRING","jsonName":"directDependency"},{"name":"transitive_dependency","number":7,"label":"LABEL_REPEATED","type":"TYPE_STRING","jsonName":"transitiveDependency"},{"name":"script","number":8,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.data.DataContainerRef","jsonName":"script"},{"name":"sourcemap","number":9,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.data.DataContainerRef","jsonName":"sourcemap"}],"options":{"[elide.model.role]":"WIRE"}}],"enumType":[{"name":"EmbeddedScriptLanguage","value":[{"name":"LANGUAGE_UNSPECIFIED","number":0},{"name":"JS","number":1}]}],"options":{"javaPackage":"tools.elide.assets","javaMultipleFiles":true,"javaStringCheckUtf8":true,"optimizeFor":"SPEED","ccEnableArenas":true,"objcClassPrefix":"ELD","csharpNamespace":"Elide.Assets","swiftPrefix":"Elide","phpClassPrefix":"ELD"},"sourceCodeInfo":{"location":[{"span":[17,0,125,1]},{"path":[12],"span":[17,0,18],"leadingComments":"\n Specifies structures used to define the notion of an \"embedded\" script asset in some foreign language, which can be\n executed at runtime by Elide to fulfill user requests.\n","leadingDetachedComments":["\n Copyright © 2022, The Elide Framework Authors. All rights reserved.\n\n The Gust/Elide framework and tools, and all associated source or object computer code, except where otherwise noted,\n are licensed under the Zero Prosperity license, which is enclosed in this repository, in the file LICENSE.txt. Use of\n this code in object or source form requires and implies consent and agreement to that license in principle and\n practice. Source or object code not listing this header, or unless specified otherwise, remain the property of\n Elide LLC and its suppliers, if any. The intellectual and technical concepts contained herein are proprietary to\n Elide LLC and its suppliers and may be covered by U.S. and Foreign Patents, or patents in process, and are protected\n by trade secret and copyright law. Dissemination of this information, or reproduction of this material, in any form,\n is strictly forbidden except in adherence with assigned license requirements.\n"]},{"path":[2],"span":[18,0,21]},{"path":[8],"span":[20,0,28]},{"path":[8,9],"span":[20,0,28]},{"path":[8],"span":[21,0,31]},{"path":[8,31],"span":[21,0,31]},{"path":[8],"span":[22,0,34]},{"path":[8,10],"span":[22,0,34]},{"path":[8],"span":[23,0,37]},{"path":[8,27],"span":[23,0,37]},{"path":[8],"span":[24,0,32]},{"path":[8,40],"span":[24,0,32]},{"path":[8],"span":[25,0,30]},{"path":[8,39],"span":[25,0,30]},{"path":[8],"span":[26,0,33]},{"path":[8,36],"span":[26,0,33]},{"path":[8],"span":[27,0,43]},{"path":[8,1],"span":[27,0,43]},{"path":[8],"span":[28,0,41]},{"path":[8,37],"span":[28,0,41]},{"path":[3,0],"span":[30,0,41]},{"path":[3,1],"span":[31,0,33]},{"path":[3,2],"span":[32,0,31]},{"path":[5,0],"span":[36,0,42,1],"leadingComments":" Enumerates languages which are supported for embedded scripting in Elide.\n"},{"path":[5,0,1],"span":[36,5,27]},{"path":[5,0,2,0],"span":[38,2,27],"leadingComments":" The language is unknown or unspecified; regular code should not use this value.\n"},{"path":[5,0,2,0,1],"span":[38,2,22]},{"path":[5,0,2,0,2],"span":[38,25,26]},{"path":[5,0,2,1],"span":[41,2,9],"leadingComments":" The language is a dialect of JavaScript.\n"},{"path":[5,0,2,1,1],"span":[41,2,4]},{"path":[5,0,2,1,2],"span":[41,7,8]},{"path":[4,0],"span":[46,0,88,1],"leadingComments":" Describes embedded script-level metadata which is enclosed with the asset spec for an embedded script.\n"},{"path":[4,0,1],"span":[46,8,30]},{"path":[4,0,3,0],"span":[48,2,81,3],"leadingComments":" Specifies JavaScript-specific script metadata.\n"},{"path":[4,0,3,0,1],"span":[48,10,26]},{"path":[4,0,3,0,4,0],"span":[50,4,77,5],"leadingComments":" Enumerates supported JavaScript language levels.\n"},{"path":[4,0,3,0,4,0,1],"span":[50,9,24]},{"path":[4,0,3,0,4,0,2,0],"span":[52,6,36],"leadingComments":" The language level is unknown or unspecified; regular code should not use this value.\n"},{"path":[4,0,3,0,4,0,2,0,1],"span":[52,6,31]},{"path":[4,0,3,0,4,0,2,0,2],"span":[52,34,35]},{"path":[4,0,3,0,4,0,2,1],"span":[55,6,14],"leadingComments":" The language level is ES5.\n"},{"path":[4,0,3,0,4,0,2,1,1],"span":[55,6,9]},{"path":[4,0,3,0,4,0,2,1,2],"span":[55,12,13]},{"path":[4,0,3,0,4,0,2,2],"span":[58,6,14],"leadingComments":" The language level is ES6.\n"},{"path":[4,0,3,0,4,0,2,2,1],"span":[58,6,9]},{"path":[4,0,3,0,4,0,2,2,2],"span":[58,12,13]},{"path":[4,0,3,0,4,0,2,3],"span":[61,6,17],"leadingComments":" The language level is ES2017.\n"},{"path":[4,0,3,0,4,0,2,3,1],"span":[61,6,12]},{"path":[4,0,3,0,4,0,2,3,2],"span":[61,15,16]},{"path":[4,0,3,0,4,0,2,4],"span":[64,6,17],"leadingComments":" The language level is ES2018.\n"},{"path":[4,0,3,0,4,0,2,4,1],"span":[64,6,12]},{"path":[4,0,3,0,4,0,2,4,2],"span":[64,15,16]},{"path":[4,0,3,0,4,0,2,5],"span":[67,6,17],"leadingComments":" The language level is ES2019.\n"},{"path":[4,0,3,0,4,0,2,5,1],"span":[67,6,12]},{"path":[4,0,3,0,4,0,2,5,2],"span":[67,15,16]},{"path":[4,0,3,0,4,0,2,6],"span":[70,6,17],"leadingComments":" The language level is ES2020.\n"},{"path":[4,0,3,0,4,0,2,6,1],"span":[70,6,12]},{"path":[4,0,3,0,4,0,2,6,2],"span":[70,15,16]},{"path":[4,0,3,0,4,0,2,7],"span":[73,6,17],"leadingComments":" The language level is ES2021.\n"},{"path":[4,0,3,0,4,0,2,7,1],"span":[73,6,12]},{"path":[4,0,3,0,4,0,2,7,2],"span":[73,15,16]},{"path":[4,0,3,0,4,0,2,8],"span":[76,6,17],"leadingComments":" The language level is ES2022.\n"},{"path":[4,0,3,0,4,0,2,8,1],"span":[76,6,12]},{"path":[4,0,3,0,4,0,2,8,2],"span":[76,15,16]},{"path":[4,0,3,0,2,0],"span":[80,4,30],"leadingComments":" Describes the JavaScript language level for the embedded script.\n"},{"path":[4,0,3,0,2,0,6],"span":[80,4,19]},{"path":[4,0,3,0,2,0,1],"span":[80,20,25]},{"path":[4,0,3,0,2,0,3],"span":[80,28,29]},{"path":[4,0,8,0],"span":[84,2,87,3],"leadingComments":" Language-specific script metadata.\n"},{"path":[4,0,8,0,1],"span":[84,8,16]},{"path":[4,0,2,0],"span":[86,4,36],"leadingComments":" JavaScript-related metadata.\n"},{"path":[4,0,2,0,6],"span":[86,4,20]},{"path":[4,0,2,0,1],"span":[86,21,31]},{"path":[4,0,2,0,3],"span":[86,34,35]},{"path":[4,1],"span":[93,0,125,1],"leadingComments":" Describes a single embedded script asset, which is embedded within an Elide application. The script is enclosed\n within the protocol buffer record, along with a digest and various metadata.\n"},{"path":[4,1,1],"span":[93,8,22]},{"path":[4,1,7],"span":[94,2,29]},{"path":[4,1,7,6000],"span":[94,2,29]},{"path":[4,1,2,0],"span":[97,2,20],"leadingComments":" Module name / ID for this embedded script. Set at build time.\n"},{"path":[4,1,2,0,5],"span":[97,2,8]},{"path":[4,1,2,0,1],"span":[97,9,15]},{"path":[4,1,2,0,3],"span":[97,18,19]},{"path":[4,1,2,1],"span":[100,2,22],"leadingComments":" Filename, or some synthesized filename, for this script.\n"},{"path":[4,1,2,1,5],"span":[100,2,8]},{"path":[4,1,2,1,1],"span":[100,9,17]},{"path":[4,1,2,1,3],"span":[100,20,21]},{"path":[4,1,2,2],"span":[103,2,38],"leadingComments":" Language of the embedded script, and expected interpreted language.\n"},{"path":[4,1,2,2,6],"span":[103,2,24]},{"path":[4,1,2,2,1],"span":[103,25,33]},{"path":[4,1,2,2,3],"span":[103,36,37]},{"path":[4,1,2,3],"span":[106,2,38],"leadingComments":" Embedded script-level metadata, including language-specific metadata.\n"},{"path":[4,1,2,3,6],"span":[106,2,24]},{"path":[4,1,2,3,1],"span":[106,25,33]},{"path":[4,1,2,3,3],"span":[106,36,37]},{"path":[4,1,2,4],"span":[109,2,46],"leadingComments":" Last-modified timestamp for the assets underlying this script.\n"},{"path":[4,1,2,4,6],"span":[109,2,27]},{"path":[4,1,2,4,1],"span":[109,28,41]},{"path":[4,1,2,4,3],"span":[109,44,45]},{"path":[4,1,2,5],"span":[113,2,40],"leadingComments":" Unique set of direct dependencies for this embedded script asset; expected to be other, compatible embedded\n scripts (same language, same runtime level). Expressed as a `module` ID.\n"},{"path":[4,1,2,5,4],"span":[113,2,10]},{"path":[4,1,2,5,5],"span":[113,11,17]},{"path":[4,1,2,5,1],"span":[113,18,35]},{"path":[4,1,2,5,3],"span":[113,38,39]},{"path":[4,1,2,6],"span":[117,2,44],"leadingComments":" Unique transitive closure of all dependencies this module relies upon; expected to be other, compatible embedded\n scripts (same language, same runtime level). Expressed as a `module` ID.\n"},{"path":[4,1,2,6,4],"span":[117,2,10]},{"path":[4,1,2,6,5],"span":[117,11,17]},{"path":[4,1,2,6,1],"span":[117,18,39]},{"path":[4,1,2,6,3],"span":[117,42,43]},{"path":[4,1,2,7],"span":[121,2,35],"leadingComments":" Describes the raw data for the script content itself, plus a digest of the data for verification purposes; the\n digest payload additionally specifies the algorithm used.\n"},{"path":[4,1,2,7,6],"span":[121,2,23]},{"path":[4,1,2,7,1],"span":[121,24,30]},{"path":[4,1,2,7,3],"span":[121,33,34]},{"path":[4,1,2,8],"span":[124,2,38],"leadingComments":" Source-map file path for the embedded script, if generated as an external file.\n"},{"path":[4,1,2,8,6],"span":[124,2,23]},{"path":[4,1,2,8,1],"span":[124,24,33]},{"path":[4,1,2,8,3],"span":[124,36,37]}]},"syntax":"proto3","bufExtension":{"isImport":false,"isSyntaxUnspecified":false}},{"name":"elide/data/secrets/token.proto","package":"elide.data.secrets","dependency":["elide/data/encoding.proto","elide/data/data.proto","elide/model/model.proto"],"messageType":[{"name":"Token","field":[{"name":"value","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.data.secrets.Token.TokenValue","jsonName":"value","options":{"[elide.model.internal]":true}},{"name":"fingerprint","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.data.DataFingerprint","jsonName":"fingerprint"}],"nestedType":[{"name":"TokenValue","field":[{"name":"__inner_value__","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.data.DataContainer","jsonName":"InnerValue","options":{"[elide.model.sensitive]":true}},{"name":"encoding","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".elide.data.Encoding","jsonName":"encoding"}]}]}],"options":{"javaPackage":"tools.elide.data.secrets","javaMultipleFiles":true,"javaStringCheckUtf8":true,"optimizeFor":"CODE_SIZE","goPackage":"github.com/elide-tools/elide/data/secrets;token","ccEnableArenas":true,"objcClassPrefix":"ELDS","csharpNamespace":"Elide.Data.Secrets","swiftPrefix":"Elide","phpClassPrefix":"ELDS"},"sourceCodeInfo":{"location":[{"span":[19,0,56,1]},{"path":[12],"span":[19,0,18],"leadingComments":"\n Specifies structures which secret tokens of various kinds; the runtime tools to deal with these tokens are specially\n designed to be as secure as possible (for example, redaction is applied to these values in logs).\n","leadingDetachedComments":["\n Copyright © 2022, The Elide Framework Authors. All rights reserved.\n\n The Gust/Elide framework and tools, and all associated source or object computer code, except where otherwise noted,\n are licensed under the Zero Prosperity license, which is enclosed in this repository, in the file LICENSE.txt. Use of\n this code in object or source form requires and implies consent and agreement to that license in principle and\n practice. Source or object code not listing this header, or unless specified otherwise, remain the property of\n Elide LLC and its suppliers, if any. The intellectual and technical concepts contained herein are proprietary to\n Elide LLC and its suppliers and may be covered by U.S. and Foreign Patents, or patents in process, and are protected\n by trade secret and copyright law. Dissemination of this information, or reproduction of this material, in any form,\n is strictly forbidden except in adherence with assigned license requirements.\n"," buf:lint:ignore FIELD_LOWER_SNAKE_CASE\n"]},{"path":[2],"span":[20,0,27]},{"path":[8],"span":[22,0,32]},{"path":[8,9],"span":[22,0,32]},{"path":[8],"span":[23,0,31]},{"path":[8,31],"span":[23,0,31]},{"path":[8],"span":[24,0,34]},{"path":[8,10],"span":[24,0,34]},{"path":[8],"span":[25,0,37]},{"path":[8,27],"span":[25,0,37]},{"path":[8],"span":[26,0,33]},{"path":[8,40],"span":[26,0,33]},{"path":[8],"span":[27,0,30]},{"path":[8,39],"span":[27,0,30]},{"path":[8],"span":[28,0,34]},{"path":[8,36],"span":[28,0,34]},{"path":[8],"span":[29,0,49]},{"path":[8,1],"span":[29,0,49]},{"path":[8],"span":[30,0,47]},{"path":[8,37],"span":[30,0,47]},{"path":[8],"span":[31,0,70]},{"path":[8,11],"span":[31,0,70]},{"path":[3,0],"span":[33,0,35]},{"path":[3,1],"span":[34,0,31]},{"path":[3,2],"span":[35,0,33]},{"path":[4,0],"span":[40,0,56,1],"leadingComments":" Coming soon.\n\n"},{"path":[4,0,1],"span":[40,8,13]},{"path":[4,0,3,0],"span":[42,2,49,3],"leadingComments":" Carries the actual value for a secure token.\n"},{"path":[4,0,3,0,1],"span":[42,10,20]},{"path":[4,0,3,0,2,0],"span":[45,4,82],"leadingComments":" Inner token value data container.\n buf:lint:ignore FIELD_LOWER_SNAKE_CASE\n"},{"path":[4,0,3,0,2,0,6],"span":[45,4,28]},{"path":[4,0,3,0,2,0,1],"span":[45,29,44]},{"path":[4,0,3,0,2,0,3],"span":[45,47,48]},{"path":[4,0,3,0,2,0,8],"span":[45,49,81]},{"path":[4,0,3,0,2,0,8,7007],"span":[45,50,80]},{"path":[4,0,3,0,2,1],"span":[48,4,37],"leadingComments":" Specifies the encoding of data held as the token value.\n"},{"path":[4,0,3,0,2,1,6],"span":[48,4,23]},{"path":[4,0,3,0,2,1,1],"span":[48,24,32]},{"path":[4,0,3,0,2,1,3],"span":[48,35,36]},{"path":[4,0,2,0],"span":[52,2,55],"leadingComments":" Specifies the data for the token.\n"},{"path":[4,0,2,0,6],"span":[52,2,12]},{"path":[4,0,2,0,1],"span":[52,13,18]},{"path":[4,0,2,0,3],"span":[52,21,22]},{"path":[4,0,2,0,8],"span":[52,23,54]},{"path":[4,0,2,0,8,7006],"span":[52,24,53]},{"path":[4,0,2,1],"span":[55,2,45],"leadingComments":" Optionally specifies a fingerprint for the enclosed data.\n"},{"path":[4,0,2,1,6],"span":[55,2,28]},{"path":[4,0,2,1,1],"span":[55,29,40]},{"path":[4,0,2,1,3],"span":[55,43,44]}]},"syntax":"proto3","bufExtension":{"isImport":false,"isSyntaxUnspecified":false}},{"name":"elide/cli/tool.proto","package":"elide.cli","dependency":["elide/data/secrets/token.proto"],"messageType":[{"name":"LocalAuthToken","field":[{"name":"user_token","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.data.secrets.Token","oneofIndex":0,"jsonName":"userToken"}],"oneofDecl":[{"name":"auth_token"}]},{"name":"CommandLineConfig","field":[{"name":"defaults","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.cli.ElideToolOptions","jsonName":"defaults"},{"name":"settings","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.cli.ElideToolOptions","jsonName":"settings"}]},{"name":"ElideToolOptions","field":[{"name":"output","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.cli.ElideToolOptions.OutputOptions","jsonName":"output"}],"nestedType":[{"name":"OutputOptions","field":[{"name":"verbose","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"verbose"},{"name":"quiet","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"quiet"},{"name":"pretty","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"pretty"}]}]},{"name":"ElideToolState","field":[{"name":"auth","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.cli.LocalAuthToken","jsonName":"auth"},{"name":"config","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.cli.CommandLineConfig","jsonName":"config"}]}],"options":{"javaPackage":"tools.elide.cli","javaMultipleFiles":true,"javaStringCheckUtf8":true,"optimizeFor":"CODE_SIZE","goPackage":"github.com/elide-tools/elide/cli;elidetool","ccEnableArenas":true,"objcClassPrefix":"ELD","csharpNamespace":"Elide.CLI","swiftPrefix":"Elide","phpClassPrefix":"ELD"},"sourceCodeInfo":{"location":[{"span":[16,0,81,1]},{"path":[12],"span":[16,0,18],"leadingComments":"\n Specifies structures and enumerations used by the Elide command-line tool.\n","leadingDetachedComments":["\n Copyright © 2022, The Elide Framework Authors. All rights reserved.\n\n The Gust/Elide framework and tools, and all associated source or object computer code, except where otherwise noted,\n are licensed under the Zero Prosperity license, which is enclosed in this repository, in the file LICENSE.txt. Use of\n this code in object or source form requires and implies consent and agreement to that license in principle and\n practice. Source or object code not listing this header, or unless specified otherwise, remain the property of\n Elide LLC and its suppliers, if any. The intellectual and technical concepts contained herein are proprietary to\n Elide LLC and its suppliers and may be covered by U.S. and Foreign Patents, or patents in process, and are protected\n by trade secret and copyright law. Dissemination of this information, or reproduction of this material, in any form,\n is strictly forbidden except in adherence with assigned license requirements.\n"]},{"path":[2],"span":[17,0,18]},{"path":[8],"span":[19,0,32]},{"path":[8,9],"span":[19,0,32]},{"path":[8],"span":[20,0,31]},{"path":[8,31],"span":[20,0,31]},{"path":[8],"span":[21,0,34]},{"path":[8,10],"span":[21,0,34]},{"path":[8],"span":[22,0,37]},{"path":[8,27],"span":[22,0,37]},{"path":[8],"span":[23,0,32]},{"path":[8,40],"span":[23,0,32]},{"path":[8],"span":[24,0,30]},{"path":[8,39],"span":[24,0,30]},{"path":[8],"span":[25,0,33]},{"path":[8,36],"span":[25,0,33]},{"path":[8],"span":[26,0,40]},{"path":[8,1],"span":[26,0,40]},{"path":[8],"span":[27,0,38]},{"path":[8,37],"span":[27,0,38]},{"path":[8],"span":[28,0,65]},{"path":[8,11],"span":[28,0,65]},{"path":[3,0],"span":[30,0,40]},{"path":[4,0],"span":[35,0,41,1],"leadingComments":" Coming soon.\n\n"},{"path":[4,0,1],"span":[35,8,22]},{"path":[4,0,8,0],"span":[37,2,40,3],"leadingComments":" Auth token attached to this record.\n"},{"path":[4,0,8,0,1],"span":[37,8,18]},{"path":[4,0,2,0],"span":[39,4,44],"leadingComments":" Specifies an authorization token for a user.\n"},{"path":[4,0,2,0,6],"span":[39,4,28]},{"path":[4,0,2,0,1],"span":[39,29,39]},{"path":[4,0,2,0,3],"span":[39,42,43]},{"path":[4,1],"span":[45,0,51,1],"leadingComments":" Coming soon.\n\n"},{"path":[4,1,1],"span":[45,8,25]},{"path":[4,1,2,0],"span":[47,2,32],"leadingComments":" Coming soon.\n"},{"path":[4,1,2,0,6],"span":[47,2,18]},{"path":[4,1,2,0,1],"span":[47,19,27]},{"path":[4,1,2,0,3],"span":[47,30,31]},{"path":[4,1,2,1],"span":[50,2,32],"leadingComments":" Coming soon.\n"},{"path":[4,1,2,1,6],"span":[50,2,18]},{"path":[4,1,2,1,1],"span":[50,19,27]},{"path":[4,1,2,1,3],"span":[50,30,31]},{"path":[4,2],"span":[55,0,71,1],"leadingComments":" Coming soon.\n\n"},{"path":[4,2,1],"span":[55,8,24]},{"path":[4,2,3,0],"span":[58,2,67,3],"leadingComments":" Coming soon.\n\n"},{"path":[4,2,3,0,1],"span":[58,10,23]},{"path":[4,2,3,0,2,0],"span":[60,4,21],"leadingComments":" Coming soon.\n"},{"path":[4,2,3,0,2,0,5],"span":[60,4,8]},{"path":[4,2,3,0,2,0,1],"span":[60,9,16]},{"path":[4,2,3,0,2,0,3],"span":[60,19,20]},{"path":[4,2,3,0,2,1],"span":[63,4,19],"leadingComments":" Coming soon.\n"},{"path":[4,2,3,0,2,1,5],"span":[63,4,8]},{"path":[4,2,3,0,2,1,1],"span":[63,9,14]},{"path":[4,2,3,0,2,1,3],"span":[63,17,18]},{"path":[4,2,3,0,2,2],"span":[66,4,20],"leadingComments":" Coming soon.\n"},{"path":[4,2,3,0,2,2,5],"span":[66,4,8]},{"path":[4,2,3,0,2,2,1],"span":[66,9,15]},{"path":[4,2,3,0,2,2,3],"span":[66,18,19]},{"path":[4,2,2,0],"span":[70,2,27],"leadingComments":" Options that control tool output.\n"},{"path":[4,2,2,0,6],"span":[70,2,15]},{"path":[4,2,2,0,1],"span":[70,16,22]},{"path":[4,2,2,0,3],"span":[70,25,26]},{"path":[4,3],"span":[75,0,81,1],"leadingComments":" Coming soon.\n\n"},{"path":[4,3,1],"span":[75,8,22]},{"path":[4,3,2,0],"span":[77,2,26],"leadingComments":" Coming soon.\n"},{"path":[4,3,2,0,6],"span":[77,2,16]},{"path":[4,3,2,0,1],"span":[77,17,21]},{"path":[4,3,2,0,3],"span":[77,24,25]},{"path":[4,3,2,1],"span":[80,2,31],"leadingComments":" Coming soon.\n"},{"path":[4,3,2,1,6],"span":[80,2,19]},{"path":[4,3,2,1,1],"span":[80,20,26]},{"path":[4,3,2,1,3],"span":[80,29,30]}]},"syntax":"proto3","bufExtension":{"isImport":false,"isSyntaxUnspecified":false}},{"name":"elide/meta/syntax.proto","package":"elide.meta","enumType":[{"name":"GuestLanguage","value":[{"name":"NO_GUEST_ENABLED","number":0},{"name":"JAVASCRIPT","number":1}]}],"options":{"javaPackage":"tools.elide.meta","javaMultipleFiles":true,"javaStringCheckUtf8":true,"optimizeFor":"SPEED","ccEnableArenas":true,"objcClassPrefix":"ELD","csharpNamespace":"Elide.Meta","swiftPrefix":"Elide","phpClassPrefix":"ELD"},"sourceCodeInfo":{"location":[{"span":[13,0,41,1]},{"path":[12],"span":[13,0,18],"leadingDetachedComments":["\n Copyright © 2022, The Elide Framework Authors. All rights reserved.\n\n The Gust/Elide framework and tools, and all associated source or object computer code, except where otherwise noted,\n are licensed under the Zero Prosperity license, which is enclosed in this repository, in the file LICENSE.txt. Use of\n this code in object or source form requires and implies consent and agreement to that license in principle and\n practice. Source or object code not listing this header, or unless specified otherwise, remain the property of\n Elide LLC and its suppliers, if any. The intellectual and technical concepts contained herein are proprietary to\n Elide LLC and its suppliers and may be covered by U.S. and Foreign Patents, or patents in process, and are protected\n by trade secret and copyright law. Dissemination of this information, or reproduction of this material, in any form,\n is strictly forbidden except in adherence with assigned license requirements.\n"]},{"path":[2],"span":[18,0,19],"leadingComments":"\n Defines known syntax types for guest languages supported by the Elide framework and runtime.\n"},{"path":[8],"span":[20,0,28]},{"path":[8,9],"span":[20,0,28]},{"path":[8],"span":[21,0,31]},{"path":[8,31],"span":[21,0,31]},{"path":[8],"span":[22,0,34]},{"path":[8,10],"span":[22,0,34]},{"path":[8],"span":[23,0,37]},{"path":[8,27],"span":[23,0,37]},{"path":[8],"span":[24,0,32]},{"path":[8,40],"span":[24,0,32]},{"path":[8],"span":[25,0,30]},{"path":[8,39],"span":[25,0,30]},{"path":[8],"span":[26,0,33]},{"path":[8,36],"span":[26,0,33]},{"path":[8],"span":[27,0,41]},{"path":[8,1],"span":[27,0,41]},{"path":[8],"span":[28,0,39]},{"path":[8,37],"span":[28,0,39]},{"path":[5,0],"span":[35,0,41,1],"leadingComments":" # Guest Language\n\n Enumerates known guest programming languages, which may be used alongside JVM technologies in an Elide application.\n This list may grow over time.\n"},{"path":[5,0,1],"span":[35,5,18]},{"path":[5,0,2,0],"span":[37,2,23],"leadingComments":" No guest language is available.\n"},{"path":[5,0,2,0,1],"span":[37,2,18]},{"path":[5,0,2,0,2],"span":[37,21,22]},{"path":[5,0,2,1],"span":[40,2,17],"leadingComments":" Guest language: JavaScript.\n"},{"path":[5,0,2,1,1],"span":[40,2,12]},{"path":[5,0,2,1,2],"span":[40,15,16]}]},"syntax":"proto3","bufExtension":{"isImport":false,"isSyntaxUnspecified":false}},{"name":"elide/meta/guest.proto","package":"elide.meta","dependency":["elide/meta/syntax.proto"],"messageType":[{"name":"JsSettings","field":[{"name":"level","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".elide.meta.JsLanguageLevel","jsonName":"level"}],"enumType":[{"name":"JsFeature","value":[{"name":"FEATURE_UNRECOGNIZED","number":0,"options":{"deprecated":true}},{"name":"ESM","number":1},{"name":"NPM","number":2}]}]},{"name":"GuestPolicy","field":[{"name":"allow_all","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","oneofIndex":0,"jsonName":"allowAll"}],"oneofDecl":[{"name":"policy"}]},{"name":"GeneralLanguageSettings","field":[{"name":"enabled","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"enabled"},{"name":"disable_cache","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"disableCache"},{"name":"default_policy","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.meta.GuestPolicy","jsonName":"defaultPolicy"}]},{"name":"GuestSettingsStanza","field":[{"name":"lang","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".elide.meta.GuestLanguage","jsonName":"lang"},{"name":"general","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.meta.GeneralLanguageSettings","jsonName":"general"},{"name":"js","number":10,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.meta.JsSettings","oneofIndex":0,"jsonName":"js"}],"oneofDecl":[{"name":"lang_settings"}]},{"name":"GuestConfiguration","field":[{"name":"enabled","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"enabled"},{"name":"settings","number":2,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".elide.meta.GuestSettingsStanza","jsonName":"settings"}]}],"enumType":[{"name":"JsLanguageLevel","value":[{"name":"JS_LANGUAGE_LEVEL_DEFAULT","number":0},{"name":"ES5","number":1},{"name":"ES6","number":2},{"name":"ES2017","number":3},{"name":"ES2018","number":4},{"name":"ES2019","number":5},{"name":"ES2020","number":6},{"name":"ES2021","number":7},{"name":"ES2022","number":8}]}],"options":{"javaPackage":"tools.elide.meta","javaMultipleFiles":true,"javaStringCheckUtf8":true,"optimizeFor":"SPEED","ccEnableArenas":true,"objcClassPrefix":"ELD","csharpNamespace":"Elide.Meta","swiftPrefix":"Elide","phpClassPrefix":"ELD"},"sourceCodeInfo":{"location":[{"span":[13,0,143,1]},{"path":[12],"span":[13,0,18],"leadingDetachedComments":["\n Copyright © 2022, The Elide Framework Authors. All rights reserved.\n\n The Gust/Elide framework and tools, and all associated source or object computer code, except where otherwise noted,\n are licensed under the Zero Prosperity license, which is enclosed in this repository, in the file LICENSE.txt. Use of\n this code in object or source form requires and implies consent and agreement to that license in principle and\n practice. Source or object code not listing this header, or unless specified otherwise, remain the property of\n Elide LLC and its suppliers, if any. The intellectual and technical concepts contained herein are proprietary to\n Elide LLC and its suppliers and may be covered by U.S. and Foreign Patents, or patents in process, and are protected\n by trade secret and copyright law. Dissemination of this information, or reproduction of this material, in any form,\n is strictly forbidden except in adherence with assigned license requirements.\n"]},{"path":[2],"span":[19,0,19],"leadingComments":"\n Defines structures and enumerations which are used to describe application guest VM settings, including language-\n specific settings.\n"},{"path":[8],"span":[21,0,28]},{"path":[8,9],"span":[21,0,28]},{"path":[8],"span":[22,0,31]},{"path":[8,31],"span":[22,0,31]},{"path":[8],"span":[23,0,34]},{"path":[8,10],"span":[23,0,34]},{"path":[8],"span":[24,0,37]},{"path":[8,27],"span":[24,0,37]},{"path":[8],"span":[25,0,32]},{"path":[8,40],"span":[25,0,32]},{"path":[8],"span":[26,0,30]},{"path":[8,39],"span":[26,0,30]},{"path":[8],"span":[27,0,33]},{"path":[8,36],"span":[27,0,33]},{"path":[8],"span":[28,0,41]},{"path":[8,1],"span":[28,0,41]},{"path":[8],"span":[29,0,39]},{"path":[8,37],"span":[29,0,39]},{"path":[3,0],"span":[31,0,33]},{"path":[5,0],"span":[35,0,62,1],"leadingComments":" Enumerates supported JavaScript language levels.\n"},{"path":[5,0,1],"span":[35,5,20]},{"path":[5,0,2,0],"span":[37,2,32],"leadingComments":" The language level is unknown or unspecified; regular code should not use this value.\n"},{"path":[5,0,2,0,1],"span":[37,2,27]},{"path":[5,0,2,0,2],"span":[37,30,31]},{"path":[5,0,2,1],"span":[40,2,10],"leadingComments":" The language level is ES5.\n"},{"path":[5,0,2,1,1],"span":[40,2,5]},{"path":[5,0,2,1,2],"span":[40,8,9]},{"path":[5,0,2,2],"span":[43,2,10],"leadingComments":" The language level is ES6.\n"},{"path":[5,0,2,2,1],"span":[43,2,5]},{"path":[5,0,2,2,2],"span":[43,8,9]},{"path":[5,0,2,3],"span":[46,2,13],"leadingComments":" The language level is ES2017.\n"},{"path":[5,0,2,3,1],"span":[46,2,8]},{"path":[5,0,2,3,2],"span":[46,11,12]},{"path":[5,0,2,4],"span":[49,2,13],"leadingComments":" The language level is ES2018.\n"},{"path":[5,0,2,4,1],"span":[49,2,8]},{"path":[5,0,2,4,2],"span":[49,11,12]},{"path":[5,0,2,5],"span":[52,2,13],"leadingComments":" The language level is ES2019.\n"},{"path":[5,0,2,5,1],"span":[52,2,8]},{"path":[5,0,2,5,2],"span":[52,11,12]},{"path":[5,0,2,6],"span":[55,2,13],"leadingComments":" The language level is ES2020.\n"},{"path":[5,0,2,6,1],"span":[55,2,8]},{"path":[5,0,2,6,2],"span":[55,11,12]},{"path":[5,0,2,7],"span":[58,2,13],"leadingComments":" The language level is ES2021.\n"},{"path":[5,0,2,7,1],"span":[58,2,8]},{"path":[5,0,2,7,2],"span":[58,11,12]},{"path":[5,0,2,8],"span":[61,2,13],"leadingComments":" The language level is ES2022.\n"},{"path":[5,0,2,8,1],"span":[61,2,8]},{"path":[5,0,2,8,2],"span":[61,11,12]},{"path":[4,0],"span":[67,0,83,1],"leadingComments":" # Language Settings: JavaScript\n\n Specifies JavaScript-specific settings and configurations.\n"},{"path":[4,0,1],"span":[67,8,18]},{"path":[4,0,4,0],"span":[69,2,79,3],"leadingComments":" Enumeration of Elide JavaScript features which may be enabled/disabled.\n"},{"path":[4,0,4,0,1],"span":[69,7,16]},{"path":[4,0,4,0,2,0],"span":[72,4,49],"leadingComments":" The feature is unknown or unspecified; regular code should not use this value. Backwards-incompatible values also\n decode to this value, where supported.\n"},{"path":[4,0,4,0,2,0,1],"span":[72,4,24]},{"path":[4,0,4,0,2,0,2],"span":[72,27,28]},{"path":[4,0,4,0,2,0,3],"span":[72,29,48]},{"path":[4,0,4,0,2,0,3,1],"span":[72,30,47]},{"path":[4,0,4,0,2,1],"span":[75,4,12],"leadingComments":" ESM: Support for ECMAScript Modules.\n"},{"path":[4,0,4,0,2,1,1],"span":[75,4,7]},{"path":[4,0,4,0,2,1,2],"span":[75,10,11]},{"path":[4,0,4,0,2,2],"span":[78,4,12],"leadingComments":" NPM: Support for NPM modules and CommonJS `require`.\n"},{"path":[4,0,4,0,2,2,1],"span":[78,4,7]},{"path":[4,0,4,0,2,2,2],"span":[78,10,11]},{"path":[4,0,2,0],"span":[82,2,28],"leadingComments":" Describes the JavaScript language level for an embedded guest script.\n"},{"path":[4,0,2,0,6],"span":[82,2,17]},{"path":[4,0,2,0,1],"span":[82,18,23]},{"path":[4,0,2,0,3],"span":[82,26,27]},{"path":[4,1],"span":[89,0,98,1],"leadingComments":" # Language Settings: Policy\n\n Guest \"policies\" define the access rights granted to a given guest language VM. Policies are defined by the host and\n enforced at runtime.\n"},{"path":[4,1,1],"span":[89,8,19]},{"path":[4,1,8,0],"span":[91,2,97,3],"leadingComments":" Policy assignment for this record.\n"},{"path":[4,1,8,0,1],"span":[91,8,14]},{"path":[4,1,2,0],"span":[96,4,23],"leadingComments":" ## Policies: Allow-all.\n\n Allows all host access for the guest language. This means the guest language can load classes, access I/O, and\n perform other potentially sensitive or dangerous operations. Exercise extreme caution enabling this policy.\n"},{"path":[4,1,2,0,5],"span":[96,4,8]},{"path":[4,1,2,0,1],"span":[96,9,18]},{"path":[4,1,2,0,3],"span":[96,21,22]},{"path":[4,2],"span":[103,0,114,1],"leadingComments":" # Language Settings: General\n\n Defines general settings and configurations which apply to every guest language.\n"},{"path":[4,2,1],"span":[103,8,31]},{"path":[4,2,2,0],"span":[105,2,19],"leadingComments":" Whether this language is enabled.\n"},{"path":[4,2,2,0,5],"span":[105,2,6]},{"path":[4,2,2,0,1],"span":[105,7,14]},{"path":[4,2,2,0,3],"span":[105,17,18]},{"path":[4,2,2,1],"span":[109,2,25],"leadingComments":" Whether to disable source parser caching. Requires sharing of engines across contexts. Defaults to `false`; should\n usually be kept on to improve performance.\n"},{"path":[4,2,2,1,5],"span":[109,2,6]},{"path":[4,2,2,1,1],"span":[109,7,20]},{"path":[4,2,2,1,3],"span":[109,23,24]},{"path":[4,2,2,2],"span":[113,2,33],"leadingComments":" Default security and isolation policy to apply to guest VMs. If left unspecified, reasonable defaults are used. Any\n same-type payload for an individual language overrides these settings within the scope of that language.\n"},{"path":[4,2,2,2,6],"span":[113,2,13]},{"path":[4,2,2,2,1],"span":[113,14,28]},{"path":[4,2,2,2,3],"span":[113,31,32]},{"path":[4,3],"span":[119,0,131,1],"leadingComments":" # Guest Settings: Stanza\n\n Describes a single group of settings which apply to a given guest language as part of a bigger set of configurations.\n"},{"path":[4,3,1],"span":[119,8,27]},{"path":[4,3,2,0],"span":[121,2,25],"leadingComments":" Specifies the language which these settings apply to.\n"},{"path":[4,3,2,0,6],"span":[121,2,15]},{"path":[4,3,2,0,1],"span":[121,16,20]},{"path":[4,3,2,0,3],"span":[121,23,24]},{"path":[4,3,2,1],"span":[124,2,38],"leadingComments":" General settings which apply to all guest language types.\n"},{"path":[4,3,2,1,6],"span":[124,2,25]},{"path":[4,3,2,1,1],"span":[124,26,33]},{"path":[4,3,2,1,3],"span":[124,36,37]},{"path":[4,3,8,0],"span":[127,2,130,3],"leadingComments":" Language-specific settings, bound to the specified `lang`.\n"},{"path":[4,3,8,0,1],"span":[127,8,21]},{"path":[4,3,2,2],"span":[129,4,23],"leadingComments":" JavaScript-specific language settings.\n"},{"path":[4,3,2,2,6],"span":[129,4,14]},{"path":[4,3,2,2,1],"span":[129,15,17]},{"path":[4,3,2,2,3],"span":[129,20,22]},{"path":[4,4],"span":[137,0,143,1],"leadingComments":" # Guest Settings: Configuration\n\n Top-level configuration for Elide guest VM settings. Includes root settings for the guest VM as well as all language-\n specific settings, as applicable.\n"},{"path":[4,4,1],"span":[137,8,26]},{"path":[4,4,2,0],"span":[139,2,19],"leadingComments":" Whether to enable guest VMs at all.\n"},{"path":[4,4,2,0,5],"span":[139,2,6]},{"path":[4,4,2,0,1],"span":[139,7,14]},{"path":[4,4,2,0,3],"span":[139,17,18]},{"path":[4,4,2,1],"span":[142,2,44],"leadingComments":" Settings stanzas, each of which describe general and language-specific settings for a given guest language.\n"},{"path":[4,4,2,1,4],"span":[142,2,10]},{"path":[4,4,2,1,6],"span":[142,11,30]},{"path":[4,4,2,1,1],"span":[142,31,39]},{"path":[4,4,2,1,3],"span":[142,42,43]}]},"syntax":"proto3","bufExtension":{"isImport":false,"isSyntaxUnspecified":false}},{"name":"elide/meta/app.proto","package":"elide.meta","dependency":["google/protobuf/timestamp.proto","elide/meta/syntax.proto","elide/meta/guest.proto"],"messageType":[{"name":"EndpointOptions","field":[{"name":"stateful","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"stateful"},{"name":"precompilable","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"precompilable"}]},{"name":"Endpoint","field":[{"name":"tag","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"tag"},{"name":"name","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","oneofIndex":0,"jsonName":"name","proto3Optional":true},{"name":"type","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".elide.meta.EndpointType","jsonName":"type"},{"name":"base","number":4,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"base"},{"name":"tail","number":5,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","oneofIndex":1,"jsonName":"tail","proto3Optional":true},{"name":"consumes","number":6,"label":"LABEL_REPEATED","type":"TYPE_STRING","jsonName":"consumes"},{"name":"produces","number":7,"label":"LABEL_REPEATED","type":"TYPE_STRING","jsonName":"produces"},{"name":"method","number":8,"label":"LABEL_REPEATED","type":"TYPE_ENUM","typeName":".elide.meta.EndpointMethods","jsonName":"method"},{"name":"options","number":9,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.meta.EndpointOptions","jsonName":"options"},{"name":"impl","number":10,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"impl"},{"name":"member","number":11,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"member"},{"name":"handler","number":12,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","oneofIndex":2,"jsonName":"handler","proto3Optional":true}],"oneofDecl":[{"name":"_name"},{"name":"_tail"},{"name":"_handler"}]},{"name":"BuildInfo","field":[{"name":"stamp","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".google.protobuf.Timestamp","jsonName":"stamp"}]},{"name":"GuestVM","field":[{"name":"language","number":1,"label":"LABEL_REPEATED","type":"TYPE_ENUM","typeName":".elide.meta.GuestLanguage","jsonName":"language"},{"name":"config","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.meta.GuestConfiguration","jsonName":"config"}]},{"name":"AppInfo","field":[{"name":"version","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"version"},{"name":"name","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","oneofIndex":0,"jsonName":"name","proto3Optional":true},{"name":"endpoints","number":3,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".elide.meta.AppInfo.EndpointsEntry","jsonName":"endpoints"}],"nestedType":[{"name":"EndpointsEntry","field":[{"name":"key","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"key"},{"name":"value","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.meta.Endpoint","jsonName":"value"}],"options":{"mapEntry":true}}],"oneofDecl":[{"name":"_name"}]},{"name":"AppManifest","field":[{"name":"app","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.meta.AppInfo","jsonName":"app"},{"name":"build","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.meta.BuildInfo","jsonName":"build"},{"name":"guest","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.meta.GuestVM","jsonName":"guest"}]}],"enumType":[{"name":"EndpointType","value":[{"name":"ENDPOINT_TYPE_UNSPECIFIED","number":0},{"name":"PAGE","number":1},{"name":"ASSET","number":2},{"name":"API","number":3}]},{"name":"EndpointMethods","value":[{"name":"GET","number":0},{"name":"POST","number":1},{"name":"PUT","number":2},{"name":"PATCH","number":3},{"name":"DELETE","number":5}]}],"options":{"javaPackage":"tools.elide.meta","javaMultipleFiles":true,"javaStringCheckUtf8":true,"optimizeFor":"SPEED","ccEnableArenas":true,"objcClassPrefix":"ELD","csharpNamespace":"Elide.Meta","swiftPrefix":"Elide","phpClassPrefix":"ELD"},"sourceCodeInfo":{"location":[{"span":[16,0,153,1]},{"path":[12],"span":[16,0,18],"leadingComments":"\n Specifies Elide application configuration, which is embedded at build-time.\n","leadingDetachedComments":["\n Copyright © 2022, The Elide Framework Authors. All rights reserved.\n\n The Gust/Elide framework and tools, and all associated source or object computer code, except where otherwise noted,\n are licensed under the Zero Prosperity license, which is enclosed in this repository, in the file LICENSE.txt. Use of\n this code in object or source form requires and implies consent and agreement to that license in principle and\n practice. Source or object code not listing this header, or unless specified otherwise, remain the property of\n Elide LLC and its suppliers, if any. The intellectual and technical concepts contained herein are proprietary to\n Elide LLC and its suppliers and may be covered by U.S. and Foreign Patents, or patents in process, and are protected\n by trade secret and copyright law. Dissemination of this information, or reproduction of this material, in any form,\n is strictly forbidden except in adherence with assigned license requirements.\n"]},{"path":[2],"span":[17,0,19]},{"path":[8],"span":[19,0,28]},{"path":[8,9],"span":[19,0,28]},{"path":[8],"span":[20,0,31]},{"path":[8,31],"span":[20,0,31]},{"path":[8],"span":[21,0,34]},{"path":[8,10],"span":[21,0,34]},{"path":[8],"span":[22,0,37]},{"path":[8,27],"span":[22,0,37]},{"path":[8],"span":[23,0,32]},{"path":[8,40],"span":[23,0,32]},{"path":[8],"span":[24,0,30]},{"path":[8,39],"span":[24,0,30]},{"path":[8],"span":[25,0,33]},{"path":[8,36],"span":[25,0,33]},{"path":[8],"span":[26,0,41]},{"path":[8,1],"span":[26,0,41]},{"path":[8],"span":[27,0,39]},{"path":[8,37],"span":[27,0,39]},{"path":[3,0],"span":[29,0,41]},{"path":[3,1],"span":[30,0,33]},{"path":[3,2],"span":[31,0,32]},{"path":[5,0],"span":[35,0,47,1],"leadingComments":" Enumerates standard types of endpoints.\n"},{"path":[5,0,1],"span":[35,5,17]},{"path":[5,0,2,0],"span":[37,2,32],"leadingComments":" Unspecified endpoint type.\n"},{"path":[5,0,2,0,1],"span":[37,2,27]},{"path":[5,0,2,0,2],"span":[37,30,31]},{"path":[5,0,2,1],"span":[40,2,11],"leadingComments":" Page endpoint type. Typically returns HTML and references assets.\n"},{"path":[5,0,2,1,1],"span":[40,2,6]},{"path":[5,0,2,1,2],"span":[40,9,10]},{"path":[5,0,2,2],"span":[43,2,12],"leadingComments":" Asset endpoint type. Typically used for CSS, JS, images.\n"},{"path":[5,0,2,2,1],"span":[43,2,7]},{"path":[5,0,2,2,2],"span":[43,10,11]},{"path":[5,0,2,3],"span":[46,2,10],"leadingComments":" API endpoint type. Typically returns JSON.\n"},{"path":[5,0,2,3,1],"span":[46,2,5]},{"path":[5,0,2,3,2],"span":[46,8,9]},{"path":[5,1],"span":[50,0,65,1],"leadingComments":" Enumerates supported/known HTTP methods for app endpoints.\n"},{"path":[5,1,1],"span":[50,5,20]},{"path":[5,1,2,0],"span":[52,2,10],"leadingComments":" HTTP GET.\n"},{"path":[5,1,2,0,1],"span":[52,2,5]},{"path":[5,1,2,0,2],"span":[52,8,9]},{"path":[5,1,2,1],"span":[55,2,11],"leadingComments":" HTTP POST.\n"},{"path":[5,1,2,1,1],"span":[55,2,6]},{"path":[5,1,2,1,2],"span":[55,9,10]},{"path":[5,1,2,2],"span":[58,2,10],"leadingComments":" HTTP PUT.\n"},{"path":[5,1,2,2,1],"span":[58,2,5]},{"path":[5,1,2,2,2],"span":[58,8,9]},{"path":[5,1,2,3],"span":[61,2,12],"leadingComments":" HTTP PATCH.\n"},{"path":[5,1,2,3,1],"span":[61,2,7]},{"path":[5,1,2,3,2],"span":[61,10,11]},{"path":[5,1,2,4],"span":[64,2,13],"leadingComments":" HTTP DELETE.\n"},{"path":[5,1,2,4,1],"span":[64,2,8]},{"path":[5,1,2,4,2],"span":[64,11,12]},{"path":[4,0],"span":[68,0,74,1],"leadingComments":" Options which apply to a particular application endpoint.\n"},{"path":[4,0,1],"span":[68,8,23]},{"path":[4,0,2,0],"span":[70,2,20],"leadingComments":" Whether this endpoint requires stateful considerations.\n"},{"path":[4,0,2,0,5],"span":[70,2,6]},{"path":[4,0,2,0,1],"span":[70,7,15]},{"path":[4,0,2,0,3],"span":[70,18,19]},{"path":[4,0,2,1],"span":[73,2,25],"leadingComments":" Whether this endpoint can be pre-compiled in an SSG context.\n"},{"path":[4,0,2,1,5],"span":[73,2,6]},{"path":[4,0,2,1,1],"span":[73,7,20]},{"path":[4,0,2,1,3],"span":[73,23,24]},{"path":[4,1],"span":[77,0,113,1],"leadingComments":" Specifies information about a single endpoint which is part of an application.\n"},{"path":[4,1,1],"span":[77,8,16]},{"path":[4,1,2,0],"span":[79,2,17],"leadingComments":" Tag generated for an endpoint.\n"},{"path":[4,1,2,0,5],"span":[79,2,8]},{"path":[4,1,2,0,1],"span":[79,9,12]},{"path":[4,1,2,0,3],"span":[79,15,16]},{"path":[4,1,2,1],"span":[82,2,27],"leadingComments":" Name given to an endpoint, if applicable; this parameter considers the method name as well as the handler name.\n"},{"path":[4,1,2,1,4],"span":[82,2,10]},{"path":[4,1,2,1,5],"span":[82,11,17]},{"path":[4,1,2,1,1],"span":[82,18,22]},{"path":[4,1,2,1,3],"span":[82,25,26]},{"path":[4,1,2,2],"span":[85,2,24],"leadingComments":" Type of endpoint detected or configured for this payload.\n"},{"path":[4,1,2,2,6],"span":[85,2,14]},{"path":[4,1,2,2,1],"span":[85,15,19]},{"path":[4,1,2,2,3],"span":[85,22,23]},{"path":[4,1,2,3],"span":[88,2,18],"leadingComments":" URL base for this endpoint (controller).\n"},{"path":[4,1,2,3,5],"span":[88,2,8]},{"path":[4,1,2,3,1],"span":[88,9,13]},{"path":[4,1,2,3,3],"span":[88,16,17]},{"path":[4,1,2,4],"span":[91,2,27],"leadingComments":" URL tail for this endpoint (method).\n"},{"path":[4,1,2,4,4],"span":[91,2,10]},{"path":[4,1,2,4,5],"span":[91,11,17]},{"path":[4,1,2,4,1],"span":[91,18,22]},{"path":[4,1,2,4,3],"span":[91,25,26]},{"path":[4,1,2,5],"span":[94,2,31],"leadingComments":" Types accepted by this method.\n"},{"path":[4,1,2,5,4],"span":[94,2,10]},{"path":[4,1,2,5,5],"span":[94,11,17]},{"path":[4,1,2,5,1],"span":[94,18,26]},{"path":[4,1,2,5,3],"span":[94,29,30]},{"path":[4,1,2,6],"span":[97,2,31],"leadingComments":" Types produced by this method.\n"},{"path":[4,1,2,6,4],"span":[97,2,10]},{"path":[4,1,2,6,5],"span":[97,11,17]},{"path":[4,1,2,6,1],"span":[97,18,26]},{"path":[4,1,2,6,3],"span":[97,29,30]},{"path":[4,1,2,7],"span":[100,2,38],"leadingComments":" HTTP methods supported by this endpoint.\n"},{"path":[4,1,2,7,4],"span":[100,2,10]},{"path":[4,1,2,7,6],"span":[100,11,26]},{"path":[4,1,2,7,1],"span":[100,27,33]},{"path":[4,1,2,7,3],"span":[100,36,37]},{"path":[4,1,2,8],"span":[103,2,30],"leadingComments":" Options which apply to this endpoint.\n"},{"path":[4,1,2,8,6],"span":[103,2,17]},{"path":[4,1,2,8,1],"span":[103,18,25]},{"path":[4,1,2,8,3],"span":[103,28,29]},{"path":[4,1,2,9],"span":[106,2,19],"leadingComments":" Fully qualified path to the implementation class.\n"},{"path":[4,1,2,9,5],"span":[106,2,8]},{"path":[4,1,2,9,1],"span":[106,9,13]},{"path":[4,1,2,9,3],"span":[106,16,18]},{"path":[4,1,2,10],"span":[109,2,21],"leadingComments":" Member function bound to this route on `impl`.\n"},{"path":[4,1,2,10,5],"span":[109,2,8]},{"path":[4,1,2,10,1],"span":[109,9,15]},{"path":[4,1,2,10,3],"span":[109,18,20]},{"path":[4,1,2,11],"span":[112,2,31],"leadingComments":" Value of the `name` parameter for the parent handler, if known.\n"},{"path":[4,1,2,11,4],"span":[112,2,10]},{"path":[4,1,2,11,5],"span":[112,11,17]},{"path":[4,1,2,11,1],"span":[112,18,25]},{"path":[4,1,2,11,3],"span":[112,28,30]},{"path":[4,2],"span":[116,0,119,1],"leadingComments":" Specifies build-time info which is enclosed in an application binary.\n"},{"path":[4,2,1],"span":[116,8,17]},{"path":[4,2,2,0],"span":[118,2,38],"leadingComments":" Timestamp indicating when a build took place.\n"},{"path":[4,2,2,0,6],"span":[118,2,27]},{"path":[4,2,2,0,1],"span":[118,28,33]},{"path":[4,2,2,0,3],"span":[118,36,37]},{"path":[4,3],"span":[122,0,128,1],"leadingComments":" Specifies guest VM requirements for a given Elide application.\n"},{"path":[4,3,1],"span":[122,8,15]},{"path":[4,3,2,0],"span":[124,2,38],"leadingComments":" Syntax set enabled for this application, if any.\n"},{"path":[4,3,2,0,4],"span":[124,2,10]},{"path":[4,3,2,0,6],"span":[124,11,24]},{"path":[4,3,2,0,1],"span":[124,25,33]},{"path":[4,3,2,0,3],"span":[124,36,37]},{"path":[4,3,2,1],"span":[127,2,32],"leadingComments":" Settings for each enabled guest language.\n"},{"path":[4,3,2,1,6],"span":[127,2,20]},{"path":[4,3,2,1,1],"span":[127,21,27]},{"path":[4,3,2,1,3],"span":[127,30,31]},{"path":[4,4],"span":[131,0,140,1],"leadingComments":" Info regarding an Elide application.\n"},{"path":[4,4,1],"span":[131,8,15]},{"path":[4,4,2,0],"span":[133,2,21],"leadingComments":" Version string of the application.\n"},{"path":[4,4,2,0,5],"span":[133,2,8]},{"path":[4,4,2,0,1],"span":[133,9,16]},{"path":[4,4,2,0,3],"span":[133,19,20]},{"path":[4,4,2,1],"span":[136,2,27],"leadingComments":" Name of the application, if known.\n"},{"path":[4,4,2,1,4],"span":[136,2,10]},{"path":[4,4,2,1,5],"span":[136,11,17]},{"path":[4,4,2,1,1],"span":[136,18,22]},{"path":[4,4,2,1,3],"span":[136,25,26]},{"path":[4,4,2,2],"span":[139,2,38],"leadingComments":" Map of endpoint tags to their info payloads for this application.\n"},{"path":[4,4,2,2,6],"span":[139,2,23]},{"path":[4,4,2,2,1],"span":[139,24,33]},{"path":[4,4,2,2,3],"span":[139,36,37]},{"path":[4,5],"span":[144,0,153,1],"leadingComments":" Main application manifest for an app powered by Elide; carries info about the build that produced a given app binary,\n and application configuration.\n"},{"path":[4,5,1],"span":[144,8,19]},{"path":[4,5,2,0],"span":[146,2,18],"leadingComments":" App info/configuration.\n"},{"path":[4,5,2,0,6],"span":[146,2,9]},{"path":[4,5,2,0,1],"span":[146,10,13]},{"path":[4,5,2,0,3],"span":[146,16,17]},{"path":[4,5,2,1],"span":[149,2,22],"leadingComments":" Build info/configuration.\n"},{"path":[4,5,2,1,6],"span":[149,2,11]},{"path":[4,5,2,1,1],"span":[149,12,17]},{"path":[4,5,2,1,3],"span":[149,20,21]},{"path":[4,5,2,2],"span":[152,2,20],"leadingComments":" Guest VM settings.\n"},{"path":[4,5,2,2,6],"span":[152,2,9]},{"path":[4,5,2,2,1],"span":[152,10,15]},{"path":[4,5,2,2,3],"span":[152,18,19]}]},"syntax":"proto3","bufExtension":{"isImport":false,"isSyntaxUnspecified":false}},{"name":"elide/vfs/file.proto","package":"elide.vfs","dependency":["google/protobuf/timestamp.proto","elide/crypto/crypto.proto","elide/data/encoding.proto"],"messageType":[{"name":"File","field":[{"name":"name","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"name"},{"name":"size","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_UINT64","jsonName":"size"},{"name":"compressed","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_UINT64","jsonName":"compressed"},{"name":"offset","number":4,"label":"LABEL_OPTIONAL","type":"TYPE_UINT64","jsonName":"offset"},{"name":"tail","number":5,"label":"LABEL_OPTIONAL","type":"TYPE_UINT64","jsonName":"tail"},{"name":"encoding","number":6,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".elide.data.Encoding","jsonName":"encoding"},{"name":"modified","number":7,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".google.protobuf.Timestamp","jsonName":"modified"},{"name":"known","number":8,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".elide.vfs.KnownMimeType","oneofIndex":0,"jsonName":"known"},{"name":"mime","number":9,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","oneofIndex":0,"jsonName":"mime"},{"name":"fingerprint","number":10,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.vfs.File.FileFingerprint","jsonName":"fingerprint"},{"name":"attributes","number":11,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".elide.vfs.File.AttributesEntry","jsonName":"attributes"}],"nestedType":[{"name":"Fingerprint","field":[{"name":"crc32","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_BYTES","oneofIndex":0,"jsonName":"crc32"},{"name":"hash","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_BYTES","oneofIndex":0,"jsonName":"hash"},{"name":"algorithm","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".elide.crypto.HashAlgorithm","jsonName":"algorithm"}],"oneofDecl":[{"name":"fingerprint"}]},{"name":"FileFingerprint","field":[{"name":"compressed","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.vfs.File.Fingerprint","jsonName":"compressed"},{"name":"uncompressed","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.vfs.File.Fingerprint","jsonName":"uncompressed"}]},{"name":"AttributesEntry","field":[{"name":"key","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"key"},{"name":"value","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"value"}],"options":{"mapEntry":true}}],"oneofDecl":[{"name":"file_type"}]}],"enumType":[{"name":"KnownMimeType","value":[{"name":"KNOWN_MIME_UNSPECIFIED","number":0}]}],"options":{"javaPackage":"tools.elide.vfs","javaMultipleFiles":true,"javaStringCheckUtf8":true,"optimizeFor":"SPEED","ccEnableArenas":true,"objcClassPrefix":"EVS","csharpNamespace":"Elide.VFS","swiftPrefix":"ElideVFS","phpClassPrefix":"EVFS"},"sourceCodeInfo":{"location":[{"span":[17,0,115,1]},{"path":[12],"span":[17,0,18],"leadingComments":"\n Specifies structures which define files and file metadata within virtualized file systems managed by Elide on behalf\n of an application or guest VM.\n","leadingDetachedComments":["\n Copyright © 2022, The Elide Framework Authors. All rights reserved.\n\n The Gust/Elide framework and tools, and all associated source or object computer code, except where otherwise noted,\n are licensed under the Zero Prosperity license, which is enclosed in this repository, in the file LICENSE.txt. Use of\n this code in object or source form requires and implies consent and agreement to that license in principle and\n practice. Source or object code not listing this header, or unless specified otherwise, remain the property of\n Elide LLC and its suppliers, if any. The intellectual and technical concepts contained herein are proprietary to\n Elide LLC and its suppliers and may be covered by U.S. and Foreign Patents, or patents in process, and are protected\n by trade secret and copyright law. Dissemination of this information, or reproduction of this material, in any form,\n is strictly forbidden except in adherence with assigned license requirements.\n"]},{"path":[2],"span":[18,0,18]},{"path":[8],"span":[20,0,28]},{"path":[8,9],"span":[20,0,28]},{"path":[8],"span":[21,0,31]},{"path":[8,31],"span":[21,0,31]},{"path":[8],"span":[22,0,34]},{"path":[8,10],"span":[22,0,34]},{"path":[8],"span":[23,0,37]},{"path":[8,27],"span":[23,0,37]},{"path":[8],"span":[24,0,33]},{"path":[8,40],"span":[24,0,33]},{"path":[8],"span":[25,0,33]},{"path":[8,39],"span":[25,0,33]},{"path":[8],"span":[26,0,33]},{"path":[8,36],"span":[26,0,33]},{"path":[8],"span":[27,0,40]},{"path":[8,1],"span":[27,0,40]},{"path":[8],"span":[28,0,38]},{"path":[8,37],"span":[28,0,38]},{"path":[3,0],"span":[30,0,41]},{"path":[3,1],"span":[31,0,35]},{"path":[3,2],"span":[32,0,35]},{"path":[5,0],"span":[39,0,43,1],"leadingComments":" # VFS: Known MIME-Type\n\n Enumerates known mime-types to the VM implementation, which can be expressed symbolically rather than in string form.\n These types are only created for files which are expected to be frequently used by the VM FS.\n"},{"path":[5,0,1],"span":[39,5,18]},{"path":[5,0,2,0],"span":[42,2,29],"leadingComments":" Unknown or unspecified known-mime-type; regular code should never use this value, as it also represents the default\n value if a known-mime-type is not specified, or if the specified value is not recognized.\n"},{"path":[5,0,2,0,1],"span":[42,2,24]},{"path":[5,0,2,0,2],"span":[42,27,28]},{"path":[4,0],"span":[53,0,115,1],"leadingComments":" # VFS: File\n\n Describes a single `File`-type entry within a given `TreeEntry`, within a virtual file system managed by Elide. File\n entries describe file metadata only; raw file data is enclosed in a compressed blob stored alongside filesystem\n metadata.\n\n See individual properties for more information. `File` objects can only be held by `TreeEntry` objects. `Directory`\n objects refer to their child `TreeEntry` constituents.\n"},{"path":[4,0,1],"span":[53,8,12]},{"path":[4,0,3,0],"span":[55,2,67,3],"leadingComments":" Cryptographic fingerprint of file data.\n"},{"path":[4,0,3,0,1],"span":[55,10,21]},{"path":[4,0,3,0,8,0],"span":[57,4,63,5],"leadingComments":" Specifies the held fingerprint data.\n"},{"path":[4,0,3,0,8,0,1],"span":[57,10,21]},{"path":[4,0,3,0,2,0],"span":[59,6,22],"leadingComments":" CRC32 fingerprint data.\n"},{"path":[4,0,3,0,2,0,5],"span":[59,6,11]},{"path":[4,0,3,0,2,0,1],"span":[59,12,17]},{"path":[4,0,3,0,2,0,3],"span":[59,20,21]},{"path":[4,0,3,0,2,1],"span":[62,6,21],"leadingComments":" Hash algorithm fingerprint data (in which case `algorithm` is required).\n"},{"path":[4,0,3,0,2,1,5],"span":[62,6,11]},{"path":[4,0,3,0,2,1,1],"span":[62,12,16]},{"path":[4,0,3,0,2,1,3],"span":[62,19,20]},{"path":[4,0,3,0,2,2],"span":[66,4,39],"leadingComments":" If this fingerprint carries a `hash` value, this describes the algorithm used.\n"},{"path":[4,0,3,0,2,2,6],"span":[66,4,24]},{"path":[4,0,3,0,2,2,1],"span":[66,25,34]},{"path":[4,0,3,0,2,2,3],"span":[66,37,38]},{"path":[4,0,3,1],"span":[70,2,76,3],"leadingComments":" Combines a compressed and uncompressed fingerprint of file data.\n"},{"path":[4,0,3,1,1],"span":[70,10,25]},{"path":[4,0,3,1,2,0],"span":[72,4,31],"leadingComments":" Describes the compressed representation's fingerprint.\n"},{"path":[4,0,3,1,2,0,6],"span":[72,4,15]},{"path":[4,0,3,1,2,0,1],"span":[72,16,26]},{"path":[4,0,3,1,2,0,3],"span":[72,29,30]},{"path":[4,0,3,1,2,1],"span":[75,4,33],"leadingComments":" Describes the regular representation's fingerprint.\n"},{"path":[4,0,3,1,2,1,6],"span":[75,4,15]},{"path":[4,0,3,1,2,1,1],"span":[75,16,28]},{"path":[4,0,3,1,2,1,3],"span":[75,31,32]},{"path":[4,0,2,0],"span":[79,2,18],"leadingComments":" Name of the file.\n"},{"path":[4,0,2,0,5],"span":[79,2,8]},{"path":[4,0,2,0,1],"span":[79,9,13]},{"path":[4,0,2,0,3],"span":[79,16,17]},{"path":[4,0,2,1],"span":[82,2,18],"leadingComments":" Uncompressed size of the file, in bytes.\n"},{"path":[4,0,2,1,5],"span":[82,2,8]},{"path":[4,0,2,1,1],"span":[82,9,13]},{"path":[4,0,2,1,3],"span":[82,16,17]},{"path":[4,0,2,2],"span":[85,2,24],"leadingComments":" Compressed size of the file, in bytes. If `size` and `compressed` are equal, the file is not compressed.\n"},{"path":[4,0,2,2,5],"span":[85,2,8]},{"path":[4,0,2,2,1],"span":[85,9,19]},{"path":[4,0,2,2,3],"span":[85,22,23]},{"path":[4,0,2,3],"span":[88,2,20],"leadingComments":" Offset at which the file begins within the compressed filesystem blob.\n"},{"path":[4,0,2,3,5],"span":[88,2,8]},{"path":[4,0,2,3,1],"span":[88,9,15]},{"path":[4,0,2,3,3],"span":[88,18,19]},{"path":[4,0,2,4],"span":[91,2,18],"leadingComments":" Offset at which the file ends within the compressed filesystem blob.\n"},{"path":[4,0,2,4,5],"span":[91,2,8]},{"path":[4,0,2,4,1],"span":[91,9,13]},{"path":[4,0,2,4,3],"span":[91,16,17]},{"path":[4,0,2,5],"span":[94,2,35],"leadingComments":" Describes the encoding of the file.\n"},{"path":[4,0,2,5,6],"span":[94,2,21]},{"path":[4,0,2,5,1],"span":[94,22,30]},{"path":[4,0,2,5,3],"span":[94,33,34]},{"path":[4,0,2,6],"span":[99,2,41],"leadingComments":" Describes the last time this file was modified. This value is only available in circumstances where the VFS is\n running with change tracking enabled (namely, during development). In production, this value will be set to a\n consistent timestamp for all assets.\n"},{"path":[4,0,2,6,6],"span":[99,2,27]},{"path":[4,0,2,6,1],"span":[99,28,36]},{"path":[4,0,2,6,3],"span":[99,39,40]},{"path":[4,0,8,0],"span":[102,2,108,3],"leadingComments":" Mime type assigned to this file, or resolved for this file, as applicable/if available at build time.\n"},{"path":[4,0,8,0,1],"span":[102,8,17]},{"path":[4,0,2,7],"span":[104,4,28],"leadingComments":" Specifies a known MIME type for this file, from the [KnownMimeType] enumeration.\n"},{"path":[4,0,2,7,6],"span":[104,4,17]},{"path":[4,0,2,7,1],"span":[104,18,23]},{"path":[4,0,2,7,3],"span":[104,26,27]},{"path":[4,0,2,8],"span":[107,4,20],"leadingComments":" Specifies a string for a mime-type. This is only used if the mime-type is not known to the VM implementation.\n"},{"path":[4,0,2,8,5],"span":[107,4,10]},{"path":[4,0,2,8,1],"span":[107,11,15]},{"path":[4,0,2,8,3],"span":[107,18,19]},{"path":[4,0,2,9],"span":[111,2,35],"leadingComments":" Fingerprints of compressed and regular file representations, as applicable.\n"},{"path":[4,0,2,9,6],"span":[111,2,17]},{"path":[4,0,2,9,1],"span":[111,18,29]},{"path":[4,0,2,9,3],"span":[111,32,34]},{"path":[4,0,2,10],"span":[114,2,38],"leadingComments":" Extended attributes for this file.\n"},{"path":[4,0,2,10,6],"span":[114,2,21]},{"path":[4,0,2,10,1],"span":[114,22,32]},{"path":[4,0,2,10,3],"span":[114,35,37]}]},"syntax":"proto3","bufExtension":{"isImport":false,"isSyntaxUnspecified":false}},{"name":"elide/vfs/tree.proto","package":"elide.vfs","dependency":["google/protobuf/timestamp.proto","elide/data/data.proto","elide/vfs/file.proto"],"messageType":[{"name":"Directory","field":[{"name":"name","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"name"},{"name":"children","number":3,"label":"LABEL_REPEATED","type":"TYPE_MESSAGE","typeName":".elide.vfs.TreeEntry","jsonName":"children"}],"reservedRange":[{"start":2,"end":3}]},{"name":"TreeEntry","field":[{"name":"parent","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.vfs.TreeEntry","jsonName":"parent"},{"name":"directory","number":9,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.vfs.Directory","oneofIndex":0,"jsonName":"directory"},{"name":"file","number":10,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.vfs.File","oneofIndex":0,"jsonName":"file"}],"oneofDecl":[{"name":"entry"}]},{"name":"Filesystem","field":[{"name":"metadata","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.vfs.Filesystem.Metadata","jsonName":"metadata"},{"name":"root","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.vfs.TreeEntry","jsonName":"root"}],"nestedType":[{"name":"Metadata","field":[{"name":"size","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_UINT64","jsonName":"size"},{"name":"compressed","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_UINT64","jsonName":"compressed"},{"name":"compression","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".elide.data.CompressionMode","jsonName":"compression"},{"name":"modified","number":6,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".google.protobuf.Timestamp","jsonName":"modified"}]}]}],"options":{"javaPackage":"tools.elide.vfs","javaMultipleFiles":true,"javaStringCheckUtf8":true,"optimizeFor":"SPEED","ccEnableArenas":true,"objcClassPrefix":"EVS","csharpNamespace":"Elide.VFS","swiftPrefix":"ElideVFS","phpClassPrefix":"EVFS"},"sourceCodeInfo":{"location":[{"span":[17,0,97,1]},{"path":[12],"span":[17,0,18],"leadingComments":"\n Specifies structures which are used at runtime to implement the virtual file system provided to Elide application\n guest VMs; see also `directory` and `file`.\n","leadingDetachedComments":["\n Copyright © 2022, The Elide Framework Authors. All rights reserved.\n\n The Gust/Elide framework and tools, and all associated source or object computer code, except where otherwise noted,\n are licensed under the Zero Prosperity license, which is enclosed in this repository, in the file LICENSE.txt. Use of\n this code in object or source form requires and implies consent and agreement to that license in principle and\n practice. Source or object code not listing this header, or unless specified otherwise, remain the property of\n Elide LLC and its suppliers, if any. The intellectual and technical concepts contained herein are proprietary to\n Elide LLC and its suppliers and may be covered by U.S. and Foreign Patents, or patents in process, and are protected\n by trade secret and copyright law. Dissemination of this information, or reproduction of this material, in any form,\n is strictly forbidden except in adherence with assigned license requirements.\n"]},{"path":[2],"span":[18,0,18]},{"path":[8],"span":[20,0,28]},{"path":[8,9],"span":[20,0,28]},{"path":[8],"span":[21,0,31]},{"path":[8,31],"span":[21,0,31]},{"path":[8],"span":[22,0,34]},{"path":[8,10],"span":[22,0,34]},{"path":[8],"span":[23,0,37]},{"path":[8,27],"span":[23,0,37]},{"path":[8],"span":[24,0,33]},{"path":[8,40],"span":[24,0,33]},{"path":[8],"span":[25,0,33]},{"path":[8,39],"span":[25,0,33]},{"path":[8],"span":[26,0,33]},{"path":[8,36],"span":[26,0,33]},{"path":[8],"span":[27,0,40]},{"path":[8,1],"span":[27,0,40]},{"path":[8],"span":[28,0,38]},{"path":[8,37],"span":[28,0,38]},{"path":[3,0],"span":[30,0,41]},{"path":[3,1],"span":[31,0,31]},{"path":[3,2],"span":[32,0,30]},{"path":[4,0],"span":[40,0,49,1],"leadingComments":" # VFS: Directory\n\n Describes a directory-type entry within a given `TreeEntry`, within a virtual file system managed by Elide. Directory\n entries can hold children (either `File` or other `Directory` objects), by way of their `TreeEntry` children. Entries\n of type `Directory` are virtualized and carry no data.\n"},{"path":[4,0,1],"span":[40,8,17]},{"path":[4,0,2,0],"span":[42,2,18],"leadingComments":" Name of the directory.\n"},{"path":[4,0,2,0,5],"span":[42,2,8]},{"path":[4,0,2,0,1],"span":[42,9,13]},{"path":[4,0,2,0,3],"span":[42,16,17]},{"path":[4,0,9],"span":[45,2,13],"leadingComments":" Reserved for future use.\n"},{"path":[4,0,9,0],"span":[45,11,12]},{"path":[4,0,9,0,1],"span":[45,11,12]},{"path":[4,0,2,1],"span":[48,2,34],"leadingComments":" Children held by this directory.\n"},{"path":[4,0,2,1,4],"span":[48,2,10]},{"path":[4,0,2,1,6],"span":[48,11,20]},{"path":[4,0,2,1,1],"span":[48,21,29]},{"path":[4,0,2,1,3],"span":[48,32,33]},{"path":[4,1],"span":[56,0,69,1],"leadingComments":" # VFS: Tree Entry\n\n Describes a single entry within a given virtual file system managed by Elide. Tree entries can hold `File` or\n `Directory` objects. Directories can, themselves, hold child `TreeEntry` objects, but files cannot.\n"},{"path":[4,1,1],"span":[56,8,17]},{"path":[4,1,2,0],"span":[59,2,23],"leadingComments":" Reference to the tree entry which holds this entry as a parent. If no parent is present, the `TreeEntry` models the\n root entry of the virtual file system. In other words, all non-root `TreeEntry` objects have a parent.\n"},{"path":[4,1,2,0,6],"span":[59,2,11]},{"path":[4,1,2,0,1],"span":[59,12,18]},{"path":[4,1,2,0,3],"span":[59,21,22]},{"path":[4,1,8,0],"span":[62,2,68,3],"leadingComments":" Describes the file system entry held by this tree entry.\n"},{"path":[4,1,8,0,1],"span":[62,8,13]},{"path":[4,1,2,1],"span":[64,4,28],"leadingComments":" Describes a directory held by this tree entry.\n"},{"path":[4,1,2,1,6],"span":[64,4,13]},{"path":[4,1,2,1,1],"span":[64,14,23]},{"path":[4,1,2,1,3],"span":[64,26,27]},{"path":[4,1,2,2],"span":[67,4,19],"leadingComments":" Describes a file held by this tree entry.\n"},{"path":[4,1,2,2,6],"span":[67,4,8]},{"path":[4,1,2,2,1],"span":[67,9,13]},{"path":[4,1,2,2,3],"span":[67,16,18]},{"path":[4,2],"span":[76,0,97,1],"leadingComments":" # VFS: File System\n\n Describes a root singleton metadata record which points to the root `TreeEntry` of a given virtual file system\n managed by Elide. Only one `Filesystem` may exist per image.\n"},{"path":[4,2,1],"span":[76,8,18]},{"path":[4,2,3,0],"span":[78,2,90,3],"leadingComments":" Filesystem-wide metadata calculated by build tools and provided at runtime.\n"},{"path":[4,2,3,0,1],"span":[78,10,18]},{"path":[4,2,3,0,2,0],"span":[80,4,20],"leadingComments":" Size of the entire virtual file system, uncompressed, in bytes.\n"},{"path":[4,2,3,0,2,0,5],"span":[80,4,10]},{"path":[4,2,3,0,2,0,1],"span":[80,11,15]},{"path":[4,2,3,0,2,0,3],"span":[80,18,19]},{"path":[4,2,3,0,2,1],"span":[83,4,26],"leadingComments":" Size of the entire virtual file system, compressed, in bytes.\n"},{"path":[4,2,3,0,2,1,5],"span":[83,4,10]},{"path":[4,2,3,0,2,1,1],"span":[83,11,21]},{"path":[4,2,3,0,2,1,3],"span":[83,24,25]},{"path":[4,2,3,0,2,2],"span":[86,4,41],"leadingComments":" Compression mode applied to the virtual file system.\n"},{"path":[4,2,3,0,2,2,6],"span":[86,4,24]},{"path":[4,2,3,0,2,2,1],"span":[86,25,36]},{"path":[4,2,3,0,2,2,3],"span":[86,39,40]},{"path":[4,2,3,0,2,3],"span":[89,4,43],"leadingComments":" Describes the most-recent modification timestamp of any constituent file within the virtual file system.\n"},{"path":[4,2,3,0,2,3,6],"span":[89,4,29]},{"path":[4,2,3,0,2,3,1],"span":[89,30,38]},{"path":[4,2,3,0,2,3,3],"span":[89,41,42]},{"path":[4,2,2,0],"span":[93,2,24],"leadingComments":" Metadata describing this filesystem.\n"},{"path":[4,2,2,0,6],"span":[93,2,10]},{"path":[4,2,2,0,1],"span":[93,11,19]},{"path":[4,2,2,0,3],"span":[93,22,23]},{"path":[4,2,2,1],"span":[96,2,21],"leadingComments":" Root `TreeEntry` of the virtual file system.\n"},{"path":[4,2,2,1,6],"span":[96,2,11]},{"path":[4,2,2,1,1],"span":[96,12,16]},{"path":[4,2,2,1,3],"span":[96,19,20]}]},"syntax":"proto3","bufExtension":{"isImport":false,"isSyntaxUnspecified":false}},{"name":"elide/vfs/bundle.proto","package":"elide.vfs","dependency":["elide/data/data.proto","elide/vfs/tree.proto"],"messageType":[{"name":"BundleHeader","field":[{"name":"magic","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_UINT32","jsonName":"magic"},{"name":"format_version","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_UINT32","jsonName":"formatVersion"},{"name":"compression_mode","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_ENUM","typeName":".elide.data.CompressionMode","jsonName":"compressionMode"},{"name":"crc32","number":4,"label":"LABEL_OPTIONAL","type":"TYPE_UINT32","jsonName":"crc32"}],"reservedRange":[{"start":5,"end":6}]},{"name":"BundleArtifacts"},{"name":"BundleInfo","field":[{"name":"header","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.vfs.BundleHeader","jsonName":"header"},{"name":"tree","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.vfs.Filesystem","jsonName":"tree"},{"name":"artifacts","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.vfs.BundleArtifacts","jsonName":"artifacts"}]}],"options":{"javaPackage":"tools.elide.vfs","javaMultipleFiles":true,"javaStringCheckUtf8":true,"optimizeFor":"SPEED","ccEnableArenas":true,"objcClassPrefix":"EVS","csharpNamespace":"Elide.VFS","swiftPrefix":"ElideVFS","phpClassPrefix":"EVFS"},"sourceCodeInfo":{"location":[{"span":[18,0,104,1]},{"path":[12],"span":[18,0,18],"leadingComments":"\n Defines structures which are used to express Elide VFS bundle files. VFS bundle files contain all the metadata and\n file data necessary to reconstruct a virtual file system. The bundle file format is designed to be compact and easily\n debuggable by developers; read on for more information.\n","leadingDetachedComments":["\n Copyright © 2022, The Elide Framework Authors. All rights reserved.\n\n The Gust/Elide framework and tools, and all associated source or object computer code, except where otherwise noted,\n are licensed under the Zero Prosperity license, which is enclosed in this repository, in the file LICENSE.txt. Use of\n this code in object or source form requires and implies consent and agreement to that license in principle and\n practice. Source or object code not listing this header, or unless specified otherwise, remain the property of\n Elide LLC and its suppliers, if any. The intellectual and technical concepts contained herein are proprietary to\n Elide LLC and its suppliers and may be covered by U.S. and Foreign Patents, or patents in process, and are protected\n by trade secret and copyright law. Dissemination of this information, or reproduction of this material, in any form,\n is strictly forbidden except in adherence with assigned license requirements.\n"]},{"path":[2],"span":[19,0,18]},{"path":[8],"span":[21,0,28]},{"path":[8,9],"span":[21,0,28]},{"path":[8],"span":[22,0,31]},{"path":[8,31],"span":[22,0,31]},{"path":[8],"span":[23,0,34]},{"path":[8,10],"span":[23,0,34]},{"path":[8],"span":[24,0,37]},{"path":[8,27],"span":[24,0,37]},{"path":[8],"span":[25,0,33]},{"path":[8,40],"span":[25,0,33]},{"path":[8],"span":[26,0,33]},{"path":[8,39],"span":[26,0,33]},{"path":[8],"span":[27,0,33]},{"path":[8,36],"span":[27,0,33]},{"path":[8],"span":[28,0,40]},{"path":[8,1],"span":[28,0,40]},{"path":[8],"span":[29,0,38]},{"path":[8,37],"span":[29,0,38]},{"path":[3,0],"span":[31,0,31]},{"path":[3,1],"span":[32,0,30]},{"path":[4,0],"span":[40,0,72,1],"leadingComments":" # VFS: Bundle Header\n\n Defines the packed layout of an Elide VFS bundle's file header. The file header contains just enough data to safely\n de-compress and unpack the file-tree metadata, and the associated raw filesystem data. The header is designed to\n evolve over time; the format version, at this time, is always `1`.\n"},{"path":[4,0,1],"span":[40,8,20]},{"path":[4,0,2,0],"span":[46,2,19],"leadingComments":" ## Header: Magic number.\n\n The magic number is a constant value known by the Elide framework, which is used to identify the file as an Elide\n VFS bundle. The magic number is a 32-bit unsigned integer, and is always the numeric equivalent of the ASCII string\n `ELDE`, or, `0x454C4445`.\n"},{"path":[4,0,2,0,5],"span":[46,2,8]},{"path":[4,0,2,0,1],"span":[46,9,14]},{"path":[4,0,2,0,3],"span":[46,17,18]},{"path":[4,0,2,1],"span":[52,2,28],"leadingComments":" ## Header: Format version.\n\n The format version is an 16-bit unsigned integer which identifies the version of the bundle file format. The format\n version is always `1` at this time.\n"},{"path":[4,0,2,1,5],"span":[52,2,8]},{"path":[4,0,2,1,1],"span":[52,9,23]},{"path":[4,0,2,1,3],"span":[52,26,27]},{"path":[4,0,2,2],"span":[58,2,50],"leadingComments":" ## Header: Compression mode.\n\n The compression mode is an 16-bit unsigned integer which identifies the compression mode used to compress the file\n tree metadata and filesystem data.\n"},{"path":[4,0,2,2,6],"span":[58,2,28]},{"path":[4,0,2,2,1],"span":[58,29,45]},{"path":[4,0,2,2,3],"span":[58,48,49]},{"path":[4,0,2,3],"span":[65,2,19],"leadingComments":" ## Header: CRC32.\n\n The CRC32 is a 32-bit unsigned integer which is used to verify the integrity of the decompressed tree metadata.\n After (or during) decompression, a CRC32 checksum is calculated over the decompressed data, and compared against\n this reference value to ensure data integrity remains intact.\n"},{"path":[4,0,2,3,5],"span":[65,2,8]},{"path":[4,0,2,3,1],"span":[65,9,14]},{"path":[4,0,2,3,3],"span":[65,17,18]},{"path":[4,0,9],"span":[71,2,13],"leadingComments":" ## Header: Reserved fields.\n\n At the moment, the full width of the header is set at 32 bytes. This leaves 16 bytes of reserved space for future\n use by the bundle format. This space is currently unused.\n"},{"path":[4,0,9,0],"span":[71,11,12]},{"path":[4,0,9,0,1],"span":[71,11,12]},{"path":[4,1],"span":[87,0,89,1],"leadingComments":" # VFS: Bundle Artifacts\n\n Structure of the JSON file which is embedded in a bundle file to enable easy inspection of filesystem contents. The\n artifacts file is always appended at the end of the outer bundle tarball, and is always named `artifacts.json.gz`, to\n reflect that it is always gzip-encoded.\n\n The artifacts file specifies the following information for each artifact embedded within the file-system:\n - The active compression format.\n - The artifact's name (path).\n - Several hashes of the artifact's un-compressed contents.\n - The artifact's un-compressed size.\n - The artifact's compressed size using the active compression format.\n - The artifact's compressed-data CRC32 checksum.\n","trailingComments":"\n"},{"path":[4,1,1],"span":[87,8,23]},{"path":[4,2],"span":[95,0,104,1],"leadingComments":" # VFS: Bundle Info\n\n Structure which defines a full suite of metadata for a given VFS bundle file. This record is only used during\n construction or loading of the bundle, as a utility; it is never serialized into the bundle itself.\n"},{"path":[4,2,1],"span":[95,8,18]},{"path":[4,2,2,0],"span":[97,2,26],"leadingComments":" Header which is present at the top of the bundle, and which provides a CRC32 of the de-compressed file-tree data.\n"},{"path":[4,2,2,0,6],"span":[97,2,14]},{"path":[4,2,2,0,1],"span":[97,15,21]},{"path":[4,2,2,0,3],"span":[97,24,25]},{"path":[4,2,2,1],"span":[100,2,22],"leadingComments":" Filesystem tree, with an entry for each file and directory present in the bundle.\n"},{"path":[4,2,2,1,6],"span":[100,2,12]},{"path":[4,2,2,1,1],"span":[100,13,17]},{"path":[4,2,2,1,3],"span":[100,20,21]},{"path":[4,2,2,2],"span":[103,2,32],"leadingComments":" Artifacts file, which is held in JSON format at the end of the bundle.\n"},{"path":[4,2,2,2,6],"span":[103,2,17]},{"path":[4,2,2,2,1],"span":[103,18,27]},{"path":[4,2,2,2,3],"span":[103,30,31]}]},"syntax":"proto3","bufExtension":{"isImport":false,"isSyntaxUnspecified":false}},{"name":"elide/vfs/config.proto","package":"elide.vfs","messageType":[{"name":"GuestVFSPolicy","field":[{"name":"allow_all","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","oneofIndex":0,"jsonName":"allowAll"},{"name":"guest","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.vfs.GuestVFSPolicy.VirtualIOPolicy","oneofIndex":0,"jsonName":"guest"},{"name":"host","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.vfs.GuestVFSPolicy.HostIOPolicy","oneofIndex":0,"jsonName":"host"},{"name":"combined","number":4,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.vfs.GuestVFSPolicy.CombinedIOPolicy","oneofIndex":0,"jsonName":"combined"}],"nestedType":[{"name":"HostIOPolicy"},{"name":"VirtualIOPolicy"},{"name":"CombinedIOPolicy","field":[{"name":"host","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.vfs.GuestVFSPolicy.HostIOPolicy","jsonName":"host"},{"name":"virtual","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.vfs.GuestVFSPolicy.VirtualIOPolicy","jsonName":"virtual"}]}],"oneofDecl":[{"name":"policy"}]},{"name":"GuestVFSConfig","field":[{"name":"read_only","number":1,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"readOnly"},{"name":"symbolic_links","number":2,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"symbolicLinks"},{"name":"case_sensitive","number":3,"label":"LABEL_OPTIONAL","type":"TYPE_BOOL","jsonName":"caseSensitive"},{"name":"policy","number":4,"label":"LABEL_OPTIONAL","type":"TYPE_MESSAGE","typeName":".elide.vfs.GuestVFSPolicy","jsonName":"policy"},{"name":"root","number":5,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"root"},{"name":"working_directory","number":6,"label":"LABEL_OPTIONAL","type":"TYPE_STRING","jsonName":"workingDirectory"}]}],"options":{"javaPackage":"tools.elide.vfs","javaMultipleFiles":true,"javaStringCheckUtf8":true,"optimizeFor":"SPEED","ccEnableArenas":true,"objcClassPrefix":"EVS","csharpNamespace":"Elide.VFS","swiftPrefix":"ElideVFS","phpClassPrefix":"EVFS"},"sourceCodeInfo":{"location":[{"span":[16,0,131,1]},{"path":[12],"span":[16,0,18],"leadingComments":"\n Specifies structures and enumerations which configure guest virtual file system (VFS) behavior in Elide.\n","leadingDetachedComments":["\n Copyright © 2022, The Elide Framework Authors. All rights reserved.\n\n The Gust/Elide framework and tools, and all associated source or object computer code, except where otherwise noted,\n are licensed under the Zero Prosperity license, which is enclosed in this repository, in the file LICENSE.txt. Use of\n this code in object or source form requires and implies consent and agreement to that license in principle and\n practice. Source or object code not listing this header, or unless specified otherwise, remain the property of\n Elide LLC and its suppliers, if any. The intellectual and technical concepts contained herein are proprietary to\n Elide LLC and its suppliers and may be covered by U.S. and Foreign Patents, or patents in process, and are protected\n by trade secret and copyright law. Dissemination of this information, or reproduction of this material, in any form,\n is strictly forbidden except in adherence with assigned license requirements.\n"]},{"path":[2],"span":[17,0,18]},{"path":[8],"span":[19,0,28]},{"path":[8,9],"span":[19,0,28]},{"path":[8],"span":[20,0,31]},{"path":[8,31],"span":[20,0,31]},{"path":[8],"span":[21,0,34]},{"path":[8,10],"span":[21,0,34]},{"path":[8],"span":[22,0,37]},{"path":[8,27],"span":[22,0,37]},{"path":[8],"span":[23,0,33]},{"path":[8,40],"span":[23,0,33]},{"path":[8],"span":[24,0,33]},{"path":[8,39],"span":[24,0,33]},{"path":[8],"span":[25,0,33]},{"path":[8,36],"span":[25,0,33]},{"path":[8],"span":[26,0,40]},{"path":[8,1],"span":[26,0,40]},{"path":[8],"span":[27,0,38]},{"path":[8,37],"span":[27,0,38]},{"path":[4,0],"span":[34,0,85,1],"leadingComments":" # VFS: Policy\n\n Specifies configuration values which are included in a guest VM configuration record, and which relate to the guest\n VM's behavior for file system access.\n"},{"path":[4,0,1],"span":[34,8,22]},{"path":[4,0,3,0],"span":[39,2,41,3],"leadingComments":" ## VFS Policy: Host I/O.\n\n Specifies I/O policy configuration for host-side I/O. Allowing host-side I/O for the guest VM enables the guest VM\n to see and access the regular host file-system.\n","trailingComments":" Nothing at this time.\n"},{"path":[4,0,3,0,1],"span":[39,10,22]},{"path":[4,0,3,1],"span":[47,2,49,3],"leadingComments":" ## VFS Policy: Virtual I/O.\n\n Specifies I/O policy configuration for guest-side I/O. Allowing guest-side I/O for the guest VM enables the guest\n VM to see and access an in-memory filesystem dedicated to the guest.\n","trailingComments":" Nothing at this time.\n"},{"path":[4,0,3,1,1],"span":[47,10,25]},{"path":[4,0,3,2],"span":[54,2,60,3],"leadingComments":" ## VFS Policy: Combined.\n\n Specifies a combined I/O policy configuration which includes both host-side and guest-side I/O policies.\n"},{"path":[4,0,3,2,1],"span":[54,10,26]},{"path":[4,0,3,2,2,0],"span":[56,4,26],"leadingComments":" Policy for host I/O access.\n"},{"path":[4,0,3,2,2,0,6],"span":[56,4,16]},{"path":[4,0,3,2,2,0,1],"span":[56,17,21]},{"path":[4,0,3,2,2,0,3],"span":[56,24,25]},{"path":[4,0,3,2,2,1],"span":[59,4,32],"leadingComments":" Policy for virtual I/O access.\n"},{"path":[4,0,3,2,2,1,6],"span":[59,4,19]},{"path":[4,0,3,2,2,1,1],"span":[59,20,27]},{"path":[4,0,3,2,2,1,3],"span":[59,30,31]},{"path":[4,0,8,0],"span":[63,2,84,3],"leadingComments":" I/O policy to apply.\n"},{"path":[4,0,8,0,1],"span":[63,8,14]},{"path":[4,0,2,0],"span":[68,4,23],"leadingComments":" Policy: Allow all I/O.\n\n This policy allows completely unrestricted I/O for host-side operations and guest-side operations. Extreme care\n should be exercised before enabling this flag.\n"},{"path":[4,0,2,0,5],"span":[68,4,8]},{"path":[4,0,2,0,1],"span":[68,9,18]},{"path":[4,0,2,0,3],"span":[68,21,22]},{"path":[4,0,2,1],"span":[73,4,30],"leadingComments":" Policy: Guest-VFS only.\n\n Applies a policy which enables guest-side virtualized I/O only, with the enclosed settings enforced at runtime.\n"},{"path":[4,0,2,1,6],"span":[73,4,19]},{"path":[4,0,2,1,1],"span":[73,20,25]},{"path":[4,0,2,1,3],"span":[73,28,29]},{"path":[4,0,2,2],"span":[78,4,26],"leadingComments":" Policy: Host-VFS only.\n\n Applies a policy which enables host-side I/O only, with the enclosed settings enforced at runtime.\n"},{"path":[4,0,2,2,6],"span":[78,4,16]},{"path":[4,0,2,2,1],"span":[78,17,21]},{"path":[4,0,2,2,3],"span":[78,24,25]},{"path":[4,0,2,3],"span":[83,4,34],"leadingComments":" Policy: Combined.\n\n Applies a policy which enables both host-side and guest-side I/O, with the enclosed settings enforced at runtime.\n"},{"path":[4,0,2,3,6],"span":[83,4,20]},{"path":[4,0,2,3,1],"span":[83,21,29]},{"path":[4,0,2,3,3],"span":[83,32,33]},{"path":[4,1],"span":[92,0,131,1],"leadingComments":" # VFS: Configuration\n\n Describes construction-time configuration values which are used to create a virtual file system for a guest VM. These\n properties describe such settings as read-only status, support for virtual links, and so on. Guest VFS configuration\n is typically derived at runtime from a combination of VFS policy (see [GuestVFSPolicy]) and top-level VM config.\n"},{"path":[4,1,1],"span":[92,8,22]},{"path":[4,1,2,0],"span":[98,2,21],"leadingComments":" Read only.\n\n Flipped to `true` if the guest virtual file system is operating in read-only mode. This is typically the case when\n executing at runtime, unless overridden by the developer. Read-only filesystem mode will raise an exception for any\n write calls sent to the VFS by the guest VM. Read-only mode does not affect the host's ability to write.\n"},{"path":[4,1,2,0,5],"span":[98,2,6]},{"path":[4,1,2,0,1],"span":[98,7,16]},{"path":[4,1,2,0,3],"span":[98,19,20]},{"path":[4,1,2,1],"span":[105,2,26],"leadingComments":" Symlink support.\n\n Flipped to `true` if the underlying VFS implementation is expected to support virtual links. This flag is typically\n set by build tools to indicate that link-based resolution of files will be required for operation. Developers\n should not need to adjust this flag manually.\n"},{"path":[4,1,2,1,5],"span":[105,2,6]},{"path":[4,1,2,1,1],"span":[105,7,21]},{"path":[4,1,2,1,3],"span":[105,24,25]},{"path":[4,1,2,2],"span":[112,2,26],"leadingComments":" Case sensitivity.\n\n Flipped to `true` if the underlying VFS implementation is expected to enforce case sensitivity for file names. This\n flag is flipped for Unix or Linux-based VFS backends where case sensitivity is required. Developers should not need\n to adjust this flag manually.\n"},{"path":[4,1,2,2,5],"span":[112,2,6]},{"path":[4,1,2,2,1],"span":[112,7,21]},{"path":[4,1,2,2,3],"span":[112,24,25]},{"path":[4,1,2,3],"span":[118,2,28],"leadingComments":" Effective VFS policy.\n\n Provides a rendered VFS policy from all input configurations, which should be applied and enforced at runtime by\n the VFS implementation.\n"},{"path":[4,1,2,3,6],"span":[118,2,16]},{"path":[4,1,2,3,1],"span":[118,17,23]},{"path":[4,1,2,3,3],"span":[118,26,27]},{"path":[4,1,2,4],"span":[124,2,18],"leadingComments":" Root directory.\n\n Specifies the root path for the virtual file system. On different platforms (such as Windows), this value may be\n customized to maintain OS I/O compat. If unset, the default value is `/`.\n"},{"path":[4,1,2,4,5],"span":[124,2,8]},{"path":[4,1,2,4,1],"span":[124,9,13]},{"path":[4,1,2,4,3],"span":[124,16,17]},{"path":[4,1,2,5],"span":[130,2,31],"leadingComments":" Working directory.\n\n Specifies the working directory (default value) for the virtual file system. On different platforms (such as on\n Windows), this value may be customized to maintain OS I/O compat. If unset, the default value is `/`.\n"},{"path":[4,1,2,5,5],"span":[130,2,8]},{"path":[4,1,2,5,1],"span":[130,9,26]},{"path":[4,1,2,5,3],"span":[130,29,30]}]},"syntax":"proto3","bufExtension":{"isImport":false,"isSyntaxUnspecified":false}}]}