Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(137)

Side by Side Diff: generated/googleapis_beta/lib/proximitybeacon/v1beta1.dart

Issue 2039113004: Api-roll 37: 2016-06-06 (Closed) Base URL: git@github.com:dart-lang/googleapis.git@master
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // This is a generated file (see the discoveryapis_generator project). 1 // This is a generated file (see the discoveryapis_generator project).
2 2
3 library googleapis_beta.proximitybeacon.v1beta1; 3 library googleapis_beta.proximitybeacon.v1beta1;
4 4
5 import 'dart:core' as core; 5 import 'dart:core' as core;
6 import 'dart:async' as async; 6 import 'dart:async' as async;
7 import 'dart:convert' as convert; 7 import 'dart:convert' as convert;
8 8
9 import 'package:_discoveryapis_commons/_discoveryapis_commons.dart' as commons; 9 import 'package:_discoveryapis_commons/_discoveryapis_commons.dart' as commons;
10 import 'package:crypto/crypto.dart' as crypto;
11 import 'package:http/http.dart' as http; 10 import 'package:http/http.dart' as http;
12 11
13 export 'package:_discoveryapis_commons/_discoveryapis_commons.dart' show 12 export 'package:_discoveryapis_commons/_discoveryapis_commons.dart' show
14 ApiRequestError, DetailedApiRequestError; 13 ApiRequestError, DetailedApiRequestError;
15 14
16 const core.String USER_AGENT = 'dart-api-client proximitybeacon/v1beta1'; 15 const core.String USER_AGENT = 'dart-api-client proximitybeacon/v1beta1';
17 16
18 /** Registers, manages, indexes, and searches beacons. */ 17 /** Registers, manages, indexes, and searches beacons. */
19 class ProximitybeaconApi { 18 class ProximitybeaconApi {
20 /** View and modify your beacons */ 19 /** View and modify your beacons */
(...skipping 1050 matching lines...) Expand 10 before | Expand all | Expand 10 after
1071 class AdvertisedId { 1070 class AdvertisedId {
1072 /** 1071 /**
1073 * The actual beacon identifier, as broadcast by the beacon hardware. Must be 1072 * The actual beacon identifier, as broadcast by the beacon hardware. Must be
1074 * [base64](http://tools.ietf.org/html/rfc4648#section-4) encoded in HTTP 1073 * [base64](http://tools.ietf.org/html/rfc4648#section-4) encoded in HTTP
1075 * requests, and will be so encoded (with padding) in responses. The base64 1074 * requests, and will be so encoded (with padding) in responses. The base64
1076 * encoding should be of the binary byte-stream and not any textual (such as 1075 * encoding should be of the binary byte-stream and not any textual (such as
1077 * hex) representation thereof. Required. 1076 * hex) representation thereof. Required.
1078 */ 1077 */
1079 core.String id; 1078 core.String id;
1080 core.List<core.int> get idAsBytes { 1079 core.List<core.int> get idAsBytes {
1081 return crypto.CryptoUtils.base64StringToBytes(id); 1080 return convert.BASE64.decode(id);
1082 } 1081 }
1083 1082
1084 void set idAsBytes(core.List<core.int> _bytes) { 1083 void set idAsBytes(core.List<core.int> _bytes) {
1085 id = crypto.CryptoUtils.bytesToBase64(_bytes, urlSafe: true); 1084 id = convert.BASE64.encode(_bytes).replaceAll("/", "_").replaceAll("+", "-") ;
1086 } 1085 }
1087 /** 1086 /**
1088 * Specifies the identifier type. Required. 1087 * Specifies the identifier type. Required.
1089 * Possible string values are: 1088 * Possible string values are:
1090 * - "TYPE_UNSPECIFIED" : A TYPE_UNSPECIFIED. 1089 * - "TYPE_UNSPECIFIED" : A TYPE_UNSPECIFIED.
1091 * - "EDDYSTONE" : A EDDYSTONE. 1090 * - "EDDYSTONE" : A EDDYSTONE.
1092 * - "IBEACON" : A IBEACON. 1091 * - "IBEACON" : A IBEACON.
1093 * - "ALTBEACON" : A ALTBEACON. 1092 * - "ALTBEACON" : A ALTBEACON.
1094 * - "EDDYSTONE_EID" : A EDDYSTONE_EID. 1093 * - "EDDYSTONE_EID" : A EDDYSTONE_EID.
1095 */ 1094 */
(...skipping 23 matching lines...) Expand all
1119 } 1118 }
1120 1119
1121 /** 1120 /**
1122 * A subset of attachment information served via the `beaconinfo.getforobserved` 1121 * A subset of attachment information served via the `beaconinfo.getforobserved`
1123 * method, used when your users encounter your beacons. 1122 * method, used when your users encounter your beacons.
1124 */ 1123 */
1125 class AttachmentInfo { 1124 class AttachmentInfo {
1126 /** An opaque data container for client-provided data. */ 1125 /** An opaque data container for client-provided data. */
1127 core.String data; 1126 core.String data;
1128 core.List<core.int> get dataAsBytes { 1127 core.List<core.int> get dataAsBytes {
1129 return crypto.CryptoUtils.base64StringToBytes(data); 1128 return convert.BASE64.decode(data);
1130 } 1129 }
1131 1130
1132 void set dataAsBytes(core.List<core.int> _bytes) { 1131 void set dataAsBytes(core.List<core.int> _bytes) {
1133 data = crypto.CryptoUtils.bytesToBase64(_bytes, urlSafe: true); 1132 data = convert.BASE64.encode(_bytes).replaceAll("/", "_").replaceAll("+", "- ");
1134 } 1133 }
1135 /** 1134 /**
1136 * Specifies what kind of attachment this is. Tells a client how to interpret 1135 * Specifies what kind of attachment this is. Tells a client how to interpret
1137 * the `data` field. Format is namespace/type, for example 1136 * the `data` field. Format is namespace/type, for example
1138 * scrupulous-wombat-12345/welcome-message 1137 * scrupulous-wombat-12345/welcome-message
1139 */ 1138 */
1140 core.String namespacedType; 1139 core.String namespacedType;
1141 1140
1142 AttachmentInfo(); 1141 AttachmentInfo();
1143 1142
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
1234 * changing any of its configuration (e.g. broadcast frames, transmit power). 1233 * changing any of its configuration (e.g. broadcast frames, transmit power).
1235 * This field provides a place to store and control access to that key. This 1234 * This field provides a place to store and control access to that key. This
1236 * field is populated in responses to `GET /v1beta1/beacons/3!beaconId` from 1235 * field is populated in responses to `GET /v1beta1/beacons/3!beaconId` from
1237 * users with write access to the given beacon. That is to say: If the user is 1236 * users with write access to the given beacon. That is to say: If the user is
1238 * authorized to write the beacon's confidential data in the service, the 1237 * authorized to write the beacon's confidential data in the service, the
1239 * service considers them authorized to configure the beacon. Note that this 1238 * service considers them authorized to configure the beacon. Note that this
1240 * key grants nothing on the service, only on the beacon itself. 1239 * key grants nothing on the service, only on the beacon itself.
1241 */ 1240 */
1242 core.String provisioningKey; 1241 core.String provisioningKey;
1243 core.List<core.int> get provisioningKeyAsBytes { 1242 core.List<core.int> get provisioningKeyAsBytes {
1244 return crypto.CryptoUtils.base64StringToBytes(provisioningKey); 1243 return convert.BASE64.decode(provisioningKey);
1245 } 1244 }
1246 1245
1247 void set provisioningKeyAsBytes(core.List<core.int> _bytes) { 1246 void set provisioningKeyAsBytes(core.List<core.int> _bytes) {
1248 provisioningKey = crypto.CryptoUtils.bytesToBase64(_bytes, urlSafe: true); 1247 provisioningKey = convert.BASE64.encode(_bytes).replaceAll("/", "_").replace All("+", "-");
1249 } 1248 }
1250 /** 1249 /**
1251 * Current status of the beacon. Required. 1250 * Current status of the beacon. Required.
1252 * Possible string values are: 1251 * Possible string values are:
1253 * - "STATUS_UNSPECIFIED" : A STATUS_UNSPECIFIED. 1252 * - "STATUS_UNSPECIFIED" : A STATUS_UNSPECIFIED.
1254 * - "ACTIVE" : A ACTIVE. 1253 * - "ACTIVE" : A ACTIVE.
1255 * - "DECOMMISSIONED" : A DECOMMISSIONED. 1254 * - "DECOMMISSIONED" : A DECOMMISSIONED.
1256 * - "INACTIVE" : A INACTIVE. 1255 * - "INACTIVE" : A INACTIVE.
1257 */ 1256 */
1258 core.String status; 1257 core.String status;
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
1341 * beacons/beacon_id/attachments/attachment_id. Leave this empty on creation. 1340 * beacons/beacon_id/attachments/attachment_id. Leave this empty on creation.
1342 */ 1341 */
1343 core.String attachmentName; 1342 core.String attachmentName;
1344 /** 1343 /**
1345 * An opaque data container for client-provided data. Must be 1344 * An opaque data container for client-provided data. Must be
1346 * [base64](http://tools.ietf.org/html/rfc4648#section-4) encoded in HTTP 1345 * [base64](http://tools.ietf.org/html/rfc4648#section-4) encoded in HTTP
1347 * requests, and will be so encoded (with padding) in responses. Required. 1346 * requests, and will be so encoded (with padding) in responses. Required.
1348 */ 1347 */
1349 core.String data; 1348 core.String data;
1350 core.List<core.int> get dataAsBytes { 1349 core.List<core.int> get dataAsBytes {
1351 return crypto.CryptoUtils.base64StringToBytes(data); 1350 return convert.BASE64.decode(data);
1352 } 1351 }
1353 1352
1354 void set dataAsBytes(core.List<core.int> _bytes) { 1353 void set dataAsBytes(core.List<core.int> _bytes) {
1355 data = crypto.CryptoUtils.bytesToBase64(_bytes, urlSafe: true); 1354 data = convert.BASE64.encode(_bytes).replaceAll("/", "_").replaceAll("+", "- ");
1356 } 1355 }
1357 /** 1356 /**
1358 * Specifies what kind of attachment this is. Tells a client how to interpret 1357 * Specifies what kind of attachment this is. Tells a client how to interpret
1359 * the `data` field. Format is namespace/type. Namespace provides type 1358 * the `data` field. Format is namespace/type. Namespace provides type
1360 * separation between clients. Type describes the type of `data`, for use by 1359 * separation between clients. Type describes the type of `data`, for use by
1361 * the client when parsing the `data` field. Required. 1360 * the client when parsing the `data` field. Required.
1362 */ 1361 */
1363 core.String namespacedType; 1362 core.String namespacedType;
1364 1363
1365 BeaconAttachment(); 1364 BeaconAttachment();
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after
1595 * at GitHub. 1594 * at GitHub.
1596 */ 1595 */
1597 class EphemeralIdRegistration { 1596 class EphemeralIdRegistration {
1598 /** 1597 /**
1599 * The beacon's public key used for the Elliptic curve Diffie-Hellman key 1598 * The beacon's public key used for the Elliptic curve Diffie-Hellman key
1600 * exchange. When this field is populated, `service_ecdh_public_key` must also 1599 * exchange. When this field is populated, `service_ecdh_public_key` must also
1601 * be populated, and `beacon_identity_key` must not be. 1600 * be populated, and `beacon_identity_key` must not be.
1602 */ 1601 */
1603 core.String beaconEcdhPublicKey; 1602 core.String beaconEcdhPublicKey;
1604 core.List<core.int> get beaconEcdhPublicKeyAsBytes { 1603 core.List<core.int> get beaconEcdhPublicKeyAsBytes {
1605 return crypto.CryptoUtils.base64StringToBytes(beaconEcdhPublicKey); 1604 return convert.BASE64.decode(beaconEcdhPublicKey);
1606 } 1605 }
1607 1606
1608 void set beaconEcdhPublicKeyAsBytes(core.List<core.int> _bytes) { 1607 void set beaconEcdhPublicKeyAsBytes(core.List<core.int> _bytes) {
1609 beaconEcdhPublicKey = crypto.CryptoUtils.bytesToBase64(_bytes, urlSafe: true ); 1608 beaconEcdhPublicKey = convert.BASE64.encode(_bytes).replaceAll("/", "_").rep laceAll("+", "-");
1610 } 1609 }
1611 /** 1610 /**
1612 * The private key of the beacon. If this field is populated, 1611 * The private key of the beacon. If this field is populated,
1613 * `beacon_ecdh_public_key` and `service_ecdh_public_key` must not be 1612 * `beacon_ecdh_public_key` and `service_ecdh_public_key` must not be
1614 * populated. 1613 * populated.
1615 */ 1614 */
1616 core.String beaconIdentityKey; 1615 core.String beaconIdentityKey;
1617 core.List<core.int> get beaconIdentityKeyAsBytes { 1616 core.List<core.int> get beaconIdentityKeyAsBytes {
1618 return crypto.CryptoUtils.base64StringToBytes(beaconIdentityKey); 1617 return convert.BASE64.decode(beaconIdentityKey);
1619 } 1618 }
1620 1619
1621 void set beaconIdentityKeyAsBytes(core.List<core.int> _bytes) { 1620 void set beaconIdentityKeyAsBytes(core.List<core.int> _bytes) {
1622 beaconIdentityKey = crypto.CryptoUtils.bytesToBase64(_bytes, urlSafe: true); 1621 beaconIdentityKey = convert.BASE64.encode(_bytes).replaceAll("/", "_").repla ceAll("+", "-");
1623 } 1622 }
1624 /** 1623 /**
1625 * The initial clock value of the beacon. The beacon's clock must have begun 1624 * The initial clock value of the beacon. The beacon's clock must have begun
1626 * counting at this value immediately prior to transmitting this value to the 1625 * counting at this value immediately prior to transmitting this value to the
1627 * resolving service. Significant delay in transmitting this value to the 1626 * resolving service. Significant delay in transmitting this value to the
1628 * service risks registration or resolution failures. If a value is not 1627 * service risks registration or resolution failures. If a value is not
1629 * provided, the default is zero. 1628 * provided, the default is zero.
1630 */ 1629 */
1631 core.String initialClockValue; 1630 core.String initialClockValue;
1632 /** 1631 /**
1633 * An initial ephemeral ID calculated using the clock value submitted as 1632 * An initial ephemeral ID calculated using the clock value submitted as
1634 * `initial_clock_value`, and the secret key generated by the Diffie-Hellman 1633 * `initial_clock_value`, and the secret key generated by the Diffie-Hellman
1635 * key exchange using `service_ecdh_public_key` and `service_ecdh_public_key`. 1634 * key exchange using `service_ecdh_public_key` and `service_ecdh_public_key`.
1636 * This initial EID value will be used by the service to confirm that the key 1635 * This initial EID value will be used by the service to confirm that the key
1637 * exchange process was successful. 1636 * exchange process was successful.
1638 */ 1637 */
1639 core.String initialEid; 1638 core.String initialEid;
1640 core.List<core.int> get initialEidAsBytes { 1639 core.List<core.int> get initialEidAsBytes {
1641 return crypto.CryptoUtils.base64StringToBytes(initialEid); 1640 return convert.BASE64.decode(initialEid);
1642 } 1641 }
1643 1642
1644 void set initialEidAsBytes(core.List<core.int> _bytes) { 1643 void set initialEidAsBytes(core.List<core.int> _bytes) {
1645 initialEid = crypto.CryptoUtils.bytesToBase64(_bytes, urlSafe: true); 1644 initialEid = convert.BASE64.encode(_bytes).replaceAll("/", "_").replaceAll(" +", "-");
1646 } 1645 }
1647 /** 1646 /**
1648 * Indicates the nominal period between each rotation of the beacon's 1647 * Indicates the nominal period between each rotation of the beacon's
1649 * ephemeral ID. "Nominal" because the beacon should randomize the actual 1648 * ephemeral ID. "Nominal" because the beacon should randomize the actual
1650 * interval. See [the spec at 1649 * interval. See [the spec at
1651 * github](https://github.com/google/eddystone/tree/master/eddystone-eid) for 1650 * github](https://github.com/google/eddystone/tree/master/eddystone-eid) for
1652 * details. This value corresponds to a power-of-two scaler on the beacon's 1651 * details. This value corresponds to a power-of-two scaler on the beacon's
1653 * clock: when the scaler value is K, the beacon will begin broadcasting a new 1652 * clock: when the scaler value is K, the beacon will begin broadcasting a new
1654 * ephemeral ID on average every 2^K seconds. 1653 * ephemeral ID on average every 2^K seconds.
1655 */ 1654 */
1656 core.int rotationPeriodExponent; 1655 core.int rotationPeriodExponent;
1657 /** 1656 /**
1658 * The service's public key used for the Elliptic curve Diffie-Hellman key 1657 * The service's public key used for the Elliptic curve Diffie-Hellman key
1659 * exchange. When this field is populated, `beacon_ecdh_public_key` must also 1658 * exchange. When this field is populated, `beacon_ecdh_public_key` must also
1660 * be populated, and `beacon_identity_key` must not be. 1659 * be populated, and `beacon_identity_key` must not be.
1661 */ 1660 */
1662 core.String serviceEcdhPublicKey; 1661 core.String serviceEcdhPublicKey;
1663 core.List<core.int> get serviceEcdhPublicKeyAsBytes { 1662 core.List<core.int> get serviceEcdhPublicKeyAsBytes {
1664 return crypto.CryptoUtils.base64StringToBytes(serviceEcdhPublicKey); 1663 return convert.BASE64.decode(serviceEcdhPublicKey);
1665 } 1664 }
1666 1665
1667 void set serviceEcdhPublicKeyAsBytes(core.List<core.int> _bytes) { 1666 void set serviceEcdhPublicKeyAsBytes(core.List<core.int> _bytes) {
1668 serviceEcdhPublicKey = crypto.CryptoUtils.bytesToBase64(_bytes, urlSafe: tru e); 1667 serviceEcdhPublicKey = convert.BASE64.encode(_bytes).replaceAll("/", "_").re placeAll("+", "-");
1669 } 1668 }
1670 1669
1671 EphemeralIdRegistration(); 1670 EphemeralIdRegistration();
1672 1671
1673 EphemeralIdRegistration.fromJson(core.Map _json) { 1672 EphemeralIdRegistration.fromJson(core.Map _json) {
1674 if (_json.containsKey("beaconEcdhPublicKey")) { 1673 if (_json.containsKey("beaconEcdhPublicKey")) {
1675 beaconEcdhPublicKey = _json["beaconEcdhPublicKey"]; 1674 beaconEcdhPublicKey = _json["beaconEcdhPublicKey"];
1676 } 1675 }
1677 if (_json.containsKey("beaconIdentityKey")) { 1676 if (_json.containsKey("beaconIdentityKey")) {
1678 beaconIdentityKey = _json["beaconIdentityKey"]; 1677 beaconIdentityKey = _json["beaconIdentityKey"];
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
1732 * Indicates the minimum rotation period supported by the service. See 1731 * Indicates the minimum rotation period supported by the service. See
1733 * EddystoneEidRegistration.rotation_period_exponent 1732 * EddystoneEidRegistration.rotation_period_exponent
1734 */ 1733 */
1735 core.int minRotationPeriodExponent; 1734 core.int minRotationPeriodExponent;
1736 /** 1735 /**
1737 * The beacon service's public key for use by a beacon to derive its Identity 1736 * The beacon service's public key for use by a beacon to derive its Identity
1738 * Key using Elliptic Curve Diffie-Hellman key exchange. 1737 * Key using Elliptic Curve Diffie-Hellman key exchange.
1739 */ 1738 */
1740 core.String serviceEcdhPublicKey; 1739 core.String serviceEcdhPublicKey;
1741 core.List<core.int> get serviceEcdhPublicKeyAsBytes { 1740 core.List<core.int> get serviceEcdhPublicKeyAsBytes {
1742 return crypto.CryptoUtils.base64StringToBytes(serviceEcdhPublicKey); 1741 return convert.BASE64.decode(serviceEcdhPublicKey);
1743 } 1742 }
1744 1743
1745 void set serviceEcdhPublicKeyAsBytes(core.List<core.int> _bytes) { 1744 void set serviceEcdhPublicKeyAsBytes(core.List<core.int> _bytes) {
1746 serviceEcdhPublicKey = crypto.CryptoUtils.bytesToBase64(_bytes, urlSafe: tru e); 1745 serviceEcdhPublicKey = convert.BASE64.encode(_bytes).replaceAll("/", "_").re placeAll("+", "-");
1747 } 1746 }
1748 1747
1749 EphemeralIdRegistrationParams(); 1748 EphemeralIdRegistrationParams();
1750 1749
1751 EphemeralIdRegistrationParams.fromJson(core.Map _json) { 1750 EphemeralIdRegistrationParams.fromJson(core.Map _json) {
1752 if (_json.containsKey("maxRotationPeriodExponent")) { 1751 if (_json.containsKey("maxRotationPeriodExponent")) {
1753 maxRotationPeriodExponent = _json["maxRotationPeriodExponent"]; 1752 maxRotationPeriodExponent = _json["maxRotationPeriodExponent"];
1754 } 1753 }
1755 if (_json.containsKey("minRotationPeriodExponent")) { 1754 if (_json.containsKey("minRotationPeriodExponent")) {
1756 minRotationPeriodExponent = _json["minRotationPeriodExponent"]; 1755 minRotationPeriodExponent = _json["minRotationPeriodExponent"];
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after
2097 * Required. 2096 * Required.
2098 */ 2097 */
2099 AdvertisedId advertisedId; 2098 AdvertisedId advertisedId;
2100 /** 2099 /**
2101 * The array of telemetry bytes received from the beacon. The server is 2100 * The array of telemetry bytes received from the beacon. The server is
2102 * responsible for parsing it. This field may frequently be empty, as with a 2101 * responsible for parsing it. This field may frequently be empty, as with a
2103 * beacon that transmits telemetry only occasionally. 2102 * beacon that transmits telemetry only occasionally.
2104 */ 2103 */
2105 core.String telemetry; 2104 core.String telemetry;
2106 core.List<core.int> get telemetryAsBytes { 2105 core.List<core.int> get telemetryAsBytes {
2107 return crypto.CryptoUtils.base64StringToBytes(telemetry); 2106 return convert.BASE64.decode(telemetry);
2108 } 2107 }
2109 2108
2110 void set telemetryAsBytes(core.List<core.int> _bytes) { 2109 void set telemetryAsBytes(core.List<core.int> _bytes) {
2111 telemetry = crypto.CryptoUtils.bytesToBase64(_bytes, urlSafe: true); 2110 telemetry = convert.BASE64.encode(_bytes).replaceAll("/", "_").replaceAll("+ ", "-");
2112 } 2111 }
2113 /** Time when the beacon was observed. */ 2112 /** Time when the beacon was observed. */
2114 core.String timestampMs; 2113 core.String timestampMs;
2115 2114
2116 Observation(); 2115 Observation();
2117 2116
2118 Observation.fromJson(core.Map _json) { 2117 Observation.fromJson(core.Map _json) {
2119 if (_json.containsKey("advertisedId")) { 2118 if (_json.containsKey("advertisedId")) {
2120 advertisedId = new AdvertisedId.fromJson(_json["advertisedId"]); 2119 advertisedId = new AdvertisedId.fromJson(_json["advertisedId"]);
2121 } 2120 }
(...skipping 12 matching lines...) Expand all
2134 } 2133 }
2135 if (telemetry != null) { 2134 if (telemetry != null) {
2136 _json["telemetry"] = telemetry; 2135 _json["telemetry"] = telemetry;
2137 } 2136 }
2138 if (timestampMs != null) { 2137 if (timestampMs != null) {
2139 _json["timestampMs"] = timestampMs; 2138 _json["timestampMs"] = timestampMs;
2140 } 2139 }
2141 return _json; 2140 return _json;
2142 } 2141 }
2143 } 2142 }
OLDNEW
« no previous file with comments | « generated/googleapis_beta/lib/dns/v2beta1.dart ('k') | generated/googleapis_beta/lib/pubsub/v1beta2.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698