maybe_document.pb.h 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541
  1. /*
  2. * Copyright 2018 Google
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. // Generated by the protocol buffer compiler. DO NOT EDIT!
  17. // source: firestore/local/maybe_document.proto
  18. #ifndef PROTOBUF_firestore_2flocal_2fmaybe_5fdocument_2eproto__INCLUDED
  19. #define PROTOBUF_firestore_2flocal_2fmaybe_5fdocument_2eproto__INCLUDED
  20. #include <string>
  21. #include <google/protobuf/stubs/common.h>
  22. #if GOOGLE_PROTOBUF_VERSION < 3005000
  23. #error This file was generated by a newer version of protoc which is
  24. #error incompatible with your Protocol Buffer headers. Please update
  25. #error your headers.
  26. #endif
  27. #if 3005000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION
  28. #error This file was generated by an older version of protoc which is
  29. #error incompatible with your Protocol Buffer headers. Please
  30. #error regenerate this file with a newer version of protoc.
  31. #endif
  32. #include <google/protobuf/io/coded_stream.h>
  33. #include <google/protobuf/arena.h>
  34. #include <google/protobuf/arenastring.h>
  35. #include <google/protobuf/generated_message_table_driven.h>
  36. #include <google/protobuf/generated_message_util.h>
  37. #include <google/protobuf/metadata.h>
  38. #include <google/protobuf/message.h>
  39. #include <google/protobuf/repeated_field.h> // IWYU pragma: export
  40. #include <google/protobuf/extension_set.h> // IWYU pragma: export
  41. #include <google/protobuf/unknown_field_set.h>
  42. #include "google/firestore/v1beta1/document.pb.h"
  43. #include <google/protobuf/timestamp.pb.h>
  44. // @@protoc_insertion_point(includes)
  45. namespace protobuf_firestore_2flocal_2fmaybe_5fdocument_2eproto {
  46. // Internal implementation detail -- do not use these members.
  47. struct TableStruct {
  48. static const ::google::protobuf::internal::ParseTableField entries[];
  49. static const ::google::protobuf::internal::AuxillaryParseTableField aux[];
  50. static const ::google::protobuf::internal::ParseTable schema[2];
  51. static const ::google::protobuf::internal::FieldMetadata field_metadata[];
  52. static const ::google::protobuf::internal::SerializationTable serialization_table[];
  53. static const ::google::protobuf::uint32 offsets[];
  54. };
  55. void AddDescriptors();
  56. void InitDefaultsNoDocumentImpl();
  57. void InitDefaultsNoDocument();
  58. void InitDefaultsMaybeDocumentImpl();
  59. void InitDefaultsMaybeDocument();
  60. inline void InitDefaults() {
  61. InitDefaultsNoDocument();
  62. InitDefaultsMaybeDocument();
  63. }
  64. } // namespace protobuf_firestore_2flocal_2fmaybe_5fdocument_2eproto
  65. namespace firestore {
  66. namespace client {
  67. class MaybeDocument;
  68. class MaybeDocumentDefaultTypeInternal;
  69. extern MaybeDocumentDefaultTypeInternal _MaybeDocument_default_instance_;
  70. class NoDocument;
  71. class NoDocumentDefaultTypeInternal;
  72. extern NoDocumentDefaultTypeInternal _NoDocument_default_instance_;
  73. } // namespace client
  74. } // namespace firestore
  75. namespace firestore {
  76. namespace client {
  77. // ===================================================================
  78. class NoDocument : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:firestore.client.NoDocument) */ {
  79. public:
  80. NoDocument();
  81. virtual ~NoDocument();
  82. NoDocument(const NoDocument& from);
  83. inline NoDocument& operator=(const NoDocument& from) {
  84. CopyFrom(from);
  85. return *this;
  86. }
  87. #if LANG_CXX11
  88. NoDocument(NoDocument&& from) noexcept
  89. : NoDocument() {
  90. *this = ::std::move(from);
  91. }
  92. inline NoDocument& operator=(NoDocument&& from) noexcept {
  93. if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
  94. if (this != &from) InternalSwap(&from);
  95. } else {
  96. CopyFrom(from);
  97. }
  98. return *this;
  99. }
  100. #endif
  101. static const ::google::protobuf::Descriptor* descriptor();
  102. static const NoDocument& default_instance();
  103. static void InitAsDefaultInstance(); // FOR INTERNAL USE ONLY
  104. static inline const NoDocument* internal_default_instance() {
  105. return reinterpret_cast<const NoDocument*>(
  106. &_NoDocument_default_instance_);
  107. }
  108. static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
  109. 0;
  110. void Swap(NoDocument* other);
  111. friend void swap(NoDocument& a, NoDocument& b) {
  112. a.Swap(&b);
  113. }
  114. // implements Message ----------------------------------------------
  115. inline NoDocument* New() const PROTOBUF_FINAL { return New(NULL); }
  116. NoDocument* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
  117. void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
  118. void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
  119. void CopyFrom(const NoDocument& from);
  120. void MergeFrom(const NoDocument& from);
  121. void Clear() PROTOBUF_FINAL;
  122. bool IsInitialized() const PROTOBUF_FINAL;
  123. size_t ByteSizeLong() const PROTOBUF_FINAL;
  124. bool MergePartialFromCodedStream(
  125. ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
  126. void SerializeWithCachedSizes(
  127. ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
  128. ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
  129. bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
  130. int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
  131. private:
  132. void SharedCtor();
  133. void SharedDtor();
  134. void SetCachedSize(int size) const PROTOBUF_FINAL;
  135. void InternalSwap(NoDocument* other);
  136. private:
  137. inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
  138. return NULL;
  139. }
  140. inline void* MaybeArenaPtr() const {
  141. return NULL;
  142. }
  143. public:
  144. ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
  145. // nested types ----------------------------------------------------
  146. // accessors -------------------------------------------------------
  147. // string name = 1;
  148. void clear_name();
  149. static const int kNameFieldNumber = 1;
  150. const ::std::string& name() const;
  151. void set_name(const ::std::string& value);
  152. #if LANG_CXX11
  153. void set_name(::std::string&& value);
  154. #endif
  155. void set_name(const char* value);
  156. void set_name(const char* value, size_t size);
  157. ::std::string* mutable_name();
  158. ::std::string* release_name();
  159. void set_allocated_name(::std::string* name);
  160. // .google.protobuf.Timestamp read_time = 2;
  161. bool has_read_time() const;
  162. void clear_read_time();
  163. static const int kReadTimeFieldNumber = 2;
  164. const ::google::protobuf::Timestamp& read_time() const;
  165. ::google::protobuf::Timestamp* release_read_time();
  166. ::google::protobuf::Timestamp* mutable_read_time();
  167. void set_allocated_read_time(::google::protobuf::Timestamp* read_time);
  168. // @@protoc_insertion_point(class_scope:firestore.client.NoDocument)
  169. private:
  170. ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  171. ::google::protobuf::internal::ArenaStringPtr name_;
  172. ::google::protobuf::Timestamp* read_time_;
  173. mutable int _cached_size_;
  174. friend struct ::protobuf_firestore_2flocal_2fmaybe_5fdocument_2eproto::TableStruct;
  175. friend void ::protobuf_firestore_2flocal_2fmaybe_5fdocument_2eproto::InitDefaultsNoDocumentImpl();
  176. };
  177. // -------------------------------------------------------------------
  178. class MaybeDocument : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:firestore.client.MaybeDocument) */ {
  179. public:
  180. MaybeDocument();
  181. virtual ~MaybeDocument();
  182. MaybeDocument(const MaybeDocument& from);
  183. inline MaybeDocument& operator=(const MaybeDocument& from) {
  184. CopyFrom(from);
  185. return *this;
  186. }
  187. #if LANG_CXX11
  188. MaybeDocument(MaybeDocument&& from) noexcept
  189. : MaybeDocument() {
  190. *this = ::std::move(from);
  191. }
  192. inline MaybeDocument& operator=(MaybeDocument&& from) noexcept {
  193. if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
  194. if (this != &from) InternalSwap(&from);
  195. } else {
  196. CopyFrom(from);
  197. }
  198. return *this;
  199. }
  200. #endif
  201. static const ::google::protobuf::Descriptor* descriptor();
  202. static const MaybeDocument& default_instance();
  203. enum DocumentTypeCase {
  204. kNoDocument = 1,
  205. kDocument = 2,
  206. DOCUMENT_TYPE_NOT_SET = 0,
  207. };
  208. static void InitAsDefaultInstance(); // FOR INTERNAL USE ONLY
  209. static inline const MaybeDocument* internal_default_instance() {
  210. return reinterpret_cast<const MaybeDocument*>(
  211. &_MaybeDocument_default_instance_);
  212. }
  213. static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
  214. 1;
  215. void Swap(MaybeDocument* other);
  216. friend void swap(MaybeDocument& a, MaybeDocument& b) {
  217. a.Swap(&b);
  218. }
  219. // implements Message ----------------------------------------------
  220. inline MaybeDocument* New() const PROTOBUF_FINAL { return New(NULL); }
  221. MaybeDocument* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
  222. void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
  223. void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
  224. void CopyFrom(const MaybeDocument& from);
  225. void MergeFrom(const MaybeDocument& from);
  226. void Clear() PROTOBUF_FINAL;
  227. bool IsInitialized() const PROTOBUF_FINAL;
  228. size_t ByteSizeLong() const PROTOBUF_FINAL;
  229. bool MergePartialFromCodedStream(
  230. ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
  231. void SerializeWithCachedSizes(
  232. ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
  233. ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
  234. bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
  235. int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
  236. private:
  237. void SharedCtor();
  238. void SharedDtor();
  239. void SetCachedSize(int size) const PROTOBUF_FINAL;
  240. void InternalSwap(MaybeDocument* other);
  241. private:
  242. inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
  243. return NULL;
  244. }
  245. inline void* MaybeArenaPtr() const {
  246. return NULL;
  247. }
  248. public:
  249. ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
  250. // nested types ----------------------------------------------------
  251. // accessors -------------------------------------------------------
  252. // .firestore.client.NoDocument no_document = 1;
  253. bool has_no_document() const;
  254. void clear_no_document();
  255. static const int kNoDocumentFieldNumber = 1;
  256. const ::firestore::client::NoDocument& no_document() const;
  257. ::firestore::client::NoDocument* release_no_document();
  258. ::firestore::client::NoDocument* mutable_no_document();
  259. void set_allocated_no_document(::firestore::client::NoDocument* no_document);
  260. // .google.firestore.v1beta1.Document document = 2;
  261. bool has_document() const;
  262. void clear_document();
  263. static const int kDocumentFieldNumber = 2;
  264. const ::google::firestore::v1beta1::Document& document() const;
  265. ::google::firestore::v1beta1::Document* release_document();
  266. ::google::firestore::v1beta1::Document* mutable_document();
  267. void set_allocated_document(::google::firestore::v1beta1::Document* document);
  268. DocumentTypeCase document_type_case() const;
  269. // @@protoc_insertion_point(class_scope:firestore.client.MaybeDocument)
  270. private:
  271. void set_has_no_document();
  272. void set_has_document();
  273. inline bool has_document_type() const;
  274. void clear_document_type();
  275. inline void clear_has_document_type();
  276. ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  277. union DocumentTypeUnion {
  278. DocumentTypeUnion() {}
  279. ::firestore::client::NoDocument* no_document_;
  280. ::google::firestore::v1beta1::Document* document_;
  281. } document_type_;
  282. mutable int _cached_size_;
  283. ::google::protobuf::uint32 _oneof_case_[1];
  284. friend struct ::protobuf_firestore_2flocal_2fmaybe_5fdocument_2eproto::TableStruct;
  285. friend void ::protobuf_firestore_2flocal_2fmaybe_5fdocument_2eproto::InitDefaultsMaybeDocumentImpl();
  286. };
  287. // ===================================================================
  288. // ===================================================================
  289. #ifdef __GNUC__
  290. #pragma GCC diagnostic push
  291. #pragma GCC diagnostic ignored "-Wstrict-aliasing"
  292. #endif // __GNUC__
  293. // NoDocument
  294. // string name = 1;
  295. inline void NoDocument::clear_name() {
  296. name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  297. }
  298. inline const ::std::string& NoDocument::name() const {
  299. // @@protoc_insertion_point(field_get:firestore.client.NoDocument.name)
  300. return name_.GetNoArena();
  301. }
  302. inline void NoDocument::set_name(const ::std::string& value) {
  303. name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  304. // @@protoc_insertion_point(field_set:firestore.client.NoDocument.name)
  305. }
  306. #if LANG_CXX11
  307. inline void NoDocument::set_name(::std::string&& value) {
  308. name_.SetNoArena(
  309. &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
  310. // @@protoc_insertion_point(field_set_rvalue:firestore.client.NoDocument.name)
  311. }
  312. #endif
  313. inline void NoDocument::set_name(const char* value) {
  314. GOOGLE_DCHECK(value != NULL);
  315. name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  316. // @@protoc_insertion_point(field_set_char:firestore.client.NoDocument.name)
  317. }
  318. inline void NoDocument::set_name(const char* value, size_t size) {
  319. name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
  320. ::std::string(reinterpret_cast<const char*>(value), size));
  321. // @@protoc_insertion_point(field_set_pointer:firestore.client.NoDocument.name)
  322. }
  323. inline ::std::string* NoDocument::mutable_name() {
  324. // @@protoc_insertion_point(field_mutable:firestore.client.NoDocument.name)
  325. return name_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  326. }
  327. inline ::std::string* NoDocument::release_name() {
  328. // @@protoc_insertion_point(field_release:firestore.client.NoDocument.name)
  329. return name_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  330. }
  331. inline void NoDocument::set_allocated_name(::std::string* name) {
  332. if (name != NULL) {
  333. } else {
  334. }
  335. name_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name);
  336. // @@protoc_insertion_point(field_set_allocated:firestore.client.NoDocument.name)
  337. }
  338. // .google.protobuf.Timestamp read_time = 2;
  339. inline bool NoDocument::has_read_time() const {
  340. return this != internal_default_instance() && read_time_ != NULL;
  341. }
  342. inline const ::google::protobuf::Timestamp& NoDocument::read_time() const {
  343. const ::google::protobuf::Timestamp* p = read_time_;
  344. // @@protoc_insertion_point(field_get:firestore.client.NoDocument.read_time)
  345. return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::Timestamp*>(
  346. &::google::protobuf::_Timestamp_default_instance_);
  347. }
  348. inline ::google::protobuf::Timestamp* NoDocument::release_read_time() {
  349. // @@protoc_insertion_point(field_release:firestore.client.NoDocument.read_time)
  350. ::google::protobuf::Timestamp* temp = read_time_;
  351. read_time_ = NULL;
  352. return temp;
  353. }
  354. inline ::google::protobuf::Timestamp* NoDocument::mutable_read_time() {
  355. if (read_time_ == NULL) {
  356. read_time_ = new ::google::protobuf::Timestamp;
  357. }
  358. // @@protoc_insertion_point(field_mutable:firestore.client.NoDocument.read_time)
  359. return read_time_;
  360. }
  361. inline void NoDocument::set_allocated_read_time(::google::protobuf::Timestamp* read_time) {
  362. ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  363. if (message_arena == NULL) {
  364. delete reinterpret_cast< ::google::protobuf::MessageLite*>(read_time_);
  365. }
  366. if (read_time) {
  367. ::google::protobuf::Arena* submessage_arena =
  368. reinterpret_cast< ::google::protobuf::MessageLite*>(read_time)->GetArena();
  369. if (message_arena != submessage_arena) {
  370. read_time = ::google::protobuf::internal::GetOwnedMessage(
  371. message_arena, read_time, submessage_arena);
  372. }
  373. } else {
  374. }
  375. read_time_ = read_time;
  376. // @@protoc_insertion_point(field_set_allocated:firestore.client.NoDocument.read_time)
  377. }
  378. // -------------------------------------------------------------------
  379. // MaybeDocument
  380. // .firestore.client.NoDocument no_document = 1;
  381. inline bool MaybeDocument::has_no_document() const {
  382. return document_type_case() == kNoDocument;
  383. }
  384. inline void MaybeDocument::set_has_no_document() {
  385. _oneof_case_[0] = kNoDocument;
  386. }
  387. inline void MaybeDocument::clear_no_document() {
  388. if (has_no_document()) {
  389. delete document_type_.no_document_;
  390. clear_has_document_type();
  391. }
  392. }
  393. inline ::firestore::client::NoDocument* MaybeDocument::release_no_document() {
  394. // @@protoc_insertion_point(field_release:firestore.client.MaybeDocument.no_document)
  395. if (has_no_document()) {
  396. clear_has_document_type();
  397. ::firestore::client::NoDocument* temp = document_type_.no_document_;
  398. document_type_.no_document_ = NULL;
  399. return temp;
  400. } else {
  401. return NULL;
  402. }
  403. }
  404. inline const ::firestore::client::NoDocument& MaybeDocument::no_document() const {
  405. // @@protoc_insertion_point(field_get:firestore.client.MaybeDocument.no_document)
  406. return has_no_document()
  407. ? *document_type_.no_document_
  408. : *reinterpret_cast< ::firestore::client::NoDocument*>(&::firestore::client::_NoDocument_default_instance_);
  409. }
  410. inline ::firestore::client::NoDocument* MaybeDocument::mutable_no_document() {
  411. if (!has_no_document()) {
  412. clear_document_type();
  413. set_has_no_document();
  414. document_type_.no_document_ = new ::firestore::client::NoDocument;
  415. }
  416. // @@protoc_insertion_point(field_mutable:firestore.client.MaybeDocument.no_document)
  417. return document_type_.no_document_;
  418. }
  419. // .google.firestore.v1beta1.Document document = 2;
  420. inline bool MaybeDocument::has_document() const {
  421. return document_type_case() == kDocument;
  422. }
  423. inline void MaybeDocument::set_has_document() {
  424. _oneof_case_[0] = kDocument;
  425. }
  426. inline ::google::firestore::v1beta1::Document* MaybeDocument::release_document() {
  427. // @@protoc_insertion_point(field_release:firestore.client.MaybeDocument.document)
  428. if (has_document()) {
  429. clear_has_document_type();
  430. ::google::firestore::v1beta1::Document* temp = document_type_.document_;
  431. document_type_.document_ = NULL;
  432. return temp;
  433. } else {
  434. return NULL;
  435. }
  436. }
  437. inline const ::google::firestore::v1beta1::Document& MaybeDocument::document() const {
  438. // @@protoc_insertion_point(field_get:firestore.client.MaybeDocument.document)
  439. return has_document()
  440. ? *document_type_.document_
  441. : *reinterpret_cast< ::google::firestore::v1beta1::Document*>(&::google::firestore::v1beta1::_Document_default_instance_);
  442. }
  443. inline ::google::firestore::v1beta1::Document* MaybeDocument::mutable_document() {
  444. if (!has_document()) {
  445. clear_document_type();
  446. set_has_document();
  447. document_type_.document_ = new ::google::firestore::v1beta1::Document;
  448. }
  449. // @@protoc_insertion_point(field_mutable:firestore.client.MaybeDocument.document)
  450. return document_type_.document_;
  451. }
  452. inline bool MaybeDocument::has_document_type() const {
  453. return document_type_case() != DOCUMENT_TYPE_NOT_SET;
  454. }
  455. inline void MaybeDocument::clear_has_document_type() {
  456. _oneof_case_[0] = DOCUMENT_TYPE_NOT_SET;
  457. }
  458. inline MaybeDocument::DocumentTypeCase MaybeDocument::document_type_case() const {
  459. return MaybeDocument::DocumentTypeCase(_oneof_case_[0]);
  460. }
  461. #ifdef __GNUC__
  462. #pragma GCC diagnostic pop
  463. #endif // __GNUC__
  464. // -------------------------------------------------------------------
  465. // @@protoc_insertion_point(namespace_scope)
  466. } // namespace client
  467. } // namespace firestore
  468. // @@protoc_insertion_point(global_scope)
  469. #endif // PROTOBUF_firestore_2flocal_2fmaybe_5fdocument_2eproto__INCLUDED