You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

943 lines
39 KiB

  1. // Code generated by protoc-gen-go. DO NOT EDIT.
  2. // source: google/devtools/remoteworkers/v1test2/bots.proto
  3. package remoteworkers // import "google.golang.org/genproto/googleapis/devtools/remoteworkers/v1test2"
  4. import proto "github.com/golang/protobuf/proto"
  5. import fmt "fmt"
  6. import math "math"
  7. import any "github.com/golang/protobuf/ptypes/any"
  8. import empty "github.com/golang/protobuf/ptypes/empty"
  9. import timestamp "github.com/golang/protobuf/ptypes/timestamp"
  10. import _ "google.golang.org/genproto/googleapis/api/annotations"
  11. import status "google.golang.org/genproto/googleapis/rpc/status"
  12. import field_mask "google.golang.org/genproto/protobuf/field_mask"
  13. import (
  14. context "golang.org/x/net/context"
  15. grpc "google.golang.org/grpc"
  16. )
  17. // Reference imports to suppress errors if they are not otherwise used.
  18. var _ = proto.Marshal
  19. var _ = fmt.Errorf
  20. var _ = math.Inf
  21. // This is a compile-time assertion to ensure that this generated file
  22. // is compatible with the proto package it is being compiled against.
  23. // A compilation error at this line likely means your copy of the
  24. // proto package needs to be updated.
  25. const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
  26. // A coarse description of the status of the bot that the server uses to
  27. // determine whether to assign the bot new leases.
  28. type BotStatus int32
  29. const (
  30. // Default value; do not use.
  31. BotStatus_BOT_STATUS_UNSPECIFIED BotStatus = 0
  32. // The bot is healthy, and will accept leases as normal.
  33. BotStatus_OK BotStatus = 1
  34. // The bot is unhealthy and will not accept new leases. For example, the bot
  35. // may have detected that available disk space is too low. This situation may
  36. // resolve itself, but will typically require human intervention.
  37. BotStatus_UNHEALTHY BotStatus = 2
  38. // The bot has been asked to reboot the host. The bot will not accept new
  39. // leases; once all leases are complete, this session will no longer be
  40. // updated but the bot will be expected to establish a new session after the
  41. // reboot completes.
  42. BotStatus_HOST_REBOOTING BotStatus = 3
  43. // The bot has been asked to shut down. As with HOST_REBOOTING, once all
  44. // leases are completed, the session will no longer be updated and the bot
  45. // will not be expected to establish a new session.
  46. //
  47. // Bots are typically only asked to shut down if its host computer will be
  48. // modified in some way, such as deleting a VM.
  49. BotStatus_BOT_TERMINATING BotStatus = 4
  50. )
  51. var BotStatus_name = map[int32]string{
  52. 0: "BOT_STATUS_UNSPECIFIED",
  53. 1: "OK",
  54. 2: "UNHEALTHY",
  55. 3: "HOST_REBOOTING",
  56. 4: "BOT_TERMINATING",
  57. }
  58. var BotStatus_value = map[string]int32{
  59. "BOT_STATUS_UNSPECIFIED": 0,
  60. "OK": 1,
  61. "UNHEALTHY": 2,
  62. "HOST_REBOOTING": 3,
  63. "BOT_TERMINATING": 4,
  64. }
  65. func (x BotStatus) String() string {
  66. return proto.EnumName(BotStatus_name, int32(x))
  67. }
  68. func (BotStatus) EnumDescriptor() ([]byte, []int) {
  69. return fileDescriptor_bots_98c3d73c9e0a8e55, []int{0}
  70. }
  71. // The state of the lease. All leases start in the PENDING state. A bot can
  72. // change PENDING to ACTIVE or (in the case of an error) COMPLETED, or from
  73. // ACTIVE to COMPLETED. The server can change PENDING or ACTIVE to CANCELLED if
  74. // it wants the bot to release its resources - for example, if the bot needs to
  75. // be quarantined (it's producing bad output) or a cell needs to be drained.
  76. type LeaseState int32
  77. const (
  78. // Default value; do not use.
  79. LeaseState_LEASE_STATE_UNSPECIFIED LeaseState = 0
  80. // Pending: the server expects the bot to accept this lease. This may only be
  81. // set by the server.
  82. LeaseState_PENDING LeaseState = 1
  83. // Active: the bot has accepted this lease. This may only be set by the bot.
  84. LeaseState_ACTIVE LeaseState = 2
  85. // Completed: the bot is no longer leased. This may only be set by the bot,
  86. // and the status field must be populated iff the state is COMPLETED.
  87. LeaseState_COMPLETED LeaseState = 4
  88. // Cancelled: The bot should immediately release all resources associated with
  89. // the lease. This may only be set by the server.
  90. LeaseState_CANCELLED LeaseState = 5
  91. )
  92. var LeaseState_name = map[int32]string{
  93. 0: "LEASE_STATE_UNSPECIFIED",
  94. 1: "PENDING",
  95. 2: "ACTIVE",
  96. 4: "COMPLETED",
  97. 5: "CANCELLED",
  98. }
  99. var LeaseState_value = map[string]int32{
  100. "LEASE_STATE_UNSPECIFIED": 0,
  101. "PENDING": 1,
  102. "ACTIVE": 2,
  103. "COMPLETED": 4,
  104. "CANCELLED": 5,
  105. }
  106. func (x LeaseState) String() string {
  107. return proto.EnumName(LeaseState_name, int32(x))
  108. }
  109. func (LeaseState) EnumDescriptor() ([]byte, []int) {
  110. return fileDescriptor_bots_98c3d73c9e0a8e55, []int{1}
  111. }
  112. // Possible administration actions.
  113. type AdminTemp_Command int32
  114. const (
  115. // Illegal value.
  116. AdminTemp_UNSPECIFIED AdminTemp_Command = 0
  117. // Download and run a new version of the bot. `arg` will be a resource
  118. // accessible via `ByteStream.Read` to obtain the new bot code.
  119. AdminTemp_BOT_UPDATE AdminTemp_Command = 1
  120. // Restart the bot without downloading a new version. `arg` will be a
  121. // message to log.
  122. AdminTemp_BOT_RESTART AdminTemp_Command = 2
  123. // Shut down the bot. `arg` will be a task resource name (similar to those
  124. // in tasks.proto) that the bot can use to tell the server that it is
  125. // terminating.
  126. AdminTemp_BOT_TERMINATE AdminTemp_Command = 3
  127. // Restart the host computer. `arg` will be a message to log.
  128. AdminTemp_HOST_RESTART AdminTemp_Command = 4
  129. )
  130. var AdminTemp_Command_name = map[int32]string{
  131. 0: "UNSPECIFIED",
  132. 1: "BOT_UPDATE",
  133. 2: "BOT_RESTART",
  134. 3: "BOT_TERMINATE",
  135. 4: "HOST_RESTART",
  136. }
  137. var AdminTemp_Command_value = map[string]int32{
  138. "UNSPECIFIED": 0,
  139. "BOT_UPDATE": 1,
  140. "BOT_RESTART": 2,
  141. "BOT_TERMINATE": 3,
  142. "HOST_RESTART": 4,
  143. }
  144. func (x AdminTemp_Command) String() string {
  145. return proto.EnumName(AdminTemp_Command_name, int32(x))
  146. }
  147. func (AdminTemp_Command) EnumDescriptor() ([]byte, []int) {
  148. return fileDescriptor_bots_98c3d73c9e0a8e55, []int{2, 0}
  149. }
  150. // Types of bot events.
  151. type PostBotEventTempRequest_Type int32
  152. const (
  153. // Illegal value.
  154. PostBotEventTempRequest_UNSPECIFIED PostBotEventTempRequest_Type = 0
  155. // Interesting but harmless event.
  156. PostBotEventTempRequest_INFO PostBotEventTempRequest_Type = 1
  157. // Error condition.
  158. PostBotEventTempRequest_ERROR PostBotEventTempRequest_Type = 2
  159. )
  160. var PostBotEventTempRequest_Type_name = map[int32]string{
  161. 0: "UNSPECIFIED",
  162. 1: "INFO",
  163. 2: "ERROR",
  164. }
  165. var PostBotEventTempRequest_Type_value = map[string]int32{
  166. "UNSPECIFIED": 0,
  167. "INFO": 1,
  168. "ERROR": 2,
  169. }
  170. func (x PostBotEventTempRequest_Type) String() string {
  171. return proto.EnumName(PostBotEventTempRequest_Type_name, int32(x))
  172. }
  173. func (PostBotEventTempRequest_Type) EnumDescriptor() ([]byte, []int) {
  174. return fileDescriptor_bots_98c3d73c9e0a8e55, []int{5, 0}
  175. }
  176. // A bot session represents the state of a bot while in continuous contact with
  177. // the server for a period of time. The session includes information about the
  178. // worker - that is, the *worker* (the physical or virtual hardware) is
  179. // considered to be a property of the bot (the software agent running on that
  180. // hardware), which is the reverse of real life, but more natural from the point
  181. // of the view of this API, which communicates solely with the bot and not
  182. // directly with the underlying worker.
  183. type BotSession struct {
  184. // The bot session name, as selected by the server. Output only during a call
  185. // to CreateBotSession.
  186. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
  187. // A unique bot ID within the farm used to persistently identify this bot over
  188. // time (i.e., over multiple sessions). This ID must be unique within a
  189. // farm. Typically, the bot ID will be the same as the name of the primary
  190. // device in the worker (e.g., what you'd get from typing `uname -n` on *nix),
  191. // but this is not required since a single device may allow multiple bots to
  192. // run on it, each with access to different resources. What is important is
  193. // that this ID is meaningful to humans, who might need to hunt a physical
  194. // machine down to fix it.
  195. //
  196. // When CreateBotSession is successfully called with a bot_id, all prior
  197. // sessions with the same ID are invalidated. If a bot attempts to update an
  198. // invalid session, the server must reject that request, and may also
  199. // quarantine the other bot with the same bot IDs (ie, stop sending it new
  200. // leases and alert an admin).
  201. BotId string `protobuf:"bytes,2,opt,name=bot_id,json=botId,proto3" json:"bot_id,omitempty"`
  202. // The status of the bot. This must be populated in every call to
  203. // UpdateBotSession.
  204. Status BotStatus `protobuf:"varint,3,opt,name=status,proto3,enum=google.devtools.remoteworkers.v1test2.BotStatus" json:"status,omitempty"`
  205. // A description of the worker hosting this bot. The Worker message is used
  206. // here in the Status context (see Worker for more information). If multiple
  207. // bots are running on the worker, this field should only describe the
  208. // resources accessible from this bot.
  209. //
  210. // During the call to CreateBotSession, the server may make arbitrary changes
  211. // to the worker's `server_properties` field (see that field for more
  212. // information). Otherwise, this field is input-only.
  213. Worker *Worker `protobuf:"bytes,4,opt,name=worker,proto3" json:"worker,omitempty"`
  214. // A list of all leases that are a part of this session. See the Lease message
  215. // for details.
  216. Leases []*Lease `protobuf:"bytes,5,rep,name=leases,proto3" json:"leases,omitempty"`
  217. // The time at which this bot session will expire, unless the bot calls
  218. // UpdateBotSession again. Output only.
  219. ExpireTime *timestamp.Timestamp `protobuf:"bytes,6,opt,name=expire_time,json=expireTime,proto3" json:"expire_time,omitempty"`
  220. // The version of the bot code currently running. The server may use this
  221. // information to issue an admin action to tell the bot to update itself.
  222. Version string `protobuf:"bytes,7,opt,name=version,proto3" json:"version,omitempty"`
  223. XXX_NoUnkeyedLiteral struct{} `json:"-"`
  224. XXX_unrecognized []byte `json:"-"`
  225. XXX_sizecache int32 `json:"-"`
  226. }
  227. func (m *BotSession) Reset() { *m = BotSession{} }
  228. func (m *BotSession) String() string { return proto.CompactTextString(m) }
  229. func (*BotSession) ProtoMessage() {}
  230. func (*BotSession) Descriptor() ([]byte, []int) {
  231. return fileDescriptor_bots_98c3d73c9e0a8e55, []int{0}
  232. }
  233. func (m *BotSession) XXX_Unmarshal(b []byte) error {
  234. return xxx_messageInfo_BotSession.Unmarshal(m, b)
  235. }
  236. func (m *BotSession) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
  237. return xxx_messageInfo_BotSession.Marshal(b, m, deterministic)
  238. }
  239. func (dst *BotSession) XXX_Merge(src proto.Message) {
  240. xxx_messageInfo_BotSession.Merge(dst, src)
  241. }
  242. func (m *BotSession) XXX_Size() int {
  243. return xxx_messageInfo_BotSession.Size(m)
  244. }
  245. func (m *BotSession) XXX_DiscardUnknown() {
  246. xxx_messageInfo_BotSession.DiscardUnknown(m)
  247. }
  248. var xxx_messageInfo_BotSession proto.InternalMessageInfo
  249. func (m *BotSession) GetName() string {
  250. if m != nil {
  251. return m.Name
  252. }
  253. return ""
  254. }
  255. func (m *BotSession) GetBotId() string {
  256. if m != nil {
  257. return m.BotId
  258. }
  259. return ""
  260. }
  261. func (m *BotSession) GetStatus() BotStatus {
  262. if m != nil {
  263. return m.Status
  264. }
  265. return BotStatus_BOT_STATUS_UNSPECIFIED
  266. }
  267. func (m *BotSession) GetWorker() *Worker {
  268. if m != nil {
  269. return m.Worker
  270. }
  271. return nil
  272. }
  273. func (m *BotSession) GetLeases() []*Lease {
  274. if m != nil {
  275. return m.Leases
  276. }
  277. return nil
  278. }
  279. func (m *BotSession) GetExpireTime() *timestamp.Timestamp {
  280. if m != nil {
  281. return m.ExpireTime
  282. }
  283. return nil
  284. }
  285. func (m *BotSession) GetVersion() string {
  286. if m != nil {
  287. return m.Version
  288. }
  289. return ""
  290. }
  291. // A Lease is a lease that the scheduler has assigned to this bot. If the bot
  292. // notices (by UpdateBotSession) that it has any leases in the PENDING state, it
  293. // should call UpdateBotSession to put the leases into the ACTIVE state and
  294. // start executing their assignments.
  295. //
  296. // All fields in this message are output-only, *except* the `state` and `status`
  297. // fields. Note that repeated fields can only be updated as a unit, so on every
  298. // update the bot must provide an update for *all* the leases the server expects
  299. // it to report on.
  300. //
  301. // The scheduler *should* ensure that all leases scheduled to a bot can actually
  302. // be accepted, but race conditions may occur. In such cases, the bot should
  303. // attempt to accept the leases in the order they are listed by the server, to
  304. // allow the server to control priorities.
  305. //
  306. // The server will remove COMPLETED leases from time to time, after which the
  307. // bot shouldn't report on them any more (the server will ignore superfluous
  308. // COMPLETED records).
  309. type Lease struct {
  310. // A short string uniquely identifing the lease within this bot session.
  311. Id string `protobuf:"bytes,7,opt,name=id,proto3" json:"id,omitempty"`
  312. // The actual work to be performed, if any. May be omitted by the server if
  313. // the lease is not in the `PENDING` state. The message must be meaningful to
  314. // the bot. Output only (must only be set by the server).
  315. Payload *any.Any `protobuf:"bytes,8,opt,name=payload,proto3" json:"payload,omitempty"`
  316. // Any result the bot wishes to provide about the lease. Must not be changed
  317. // after the first call with the lease in the `COMPLETED` or `CANCELLED`
  318. // state. Input only (must only be set by the bot, will not be echoed by the
  319. // server).
  320. Result *any.Any `protobuf:"bytes,9,opt,name=result,proto3" json:"result,omitempty"`
  321. // The state of the lease. See LeaseState for more information.
  322. State LeaseState `protobuf:"varint,2,opt,name=state,proto3,enum=google.devtools.remoteworkers.v1test2.LeaseState" json:"state,omitempty"`
  323. // The final status of the lease (should be populated by the bot if the state
  324. // is completed). This is the status of the lease, not of any task represented
  325. // by the lease. For example, if the bot could not accept the lease because it
  326. // asked for some resource the bot didn't have, this status will be
  327. // FAILED_PRECONDITION. But if the assignment in the lease didn't execute
  328. // correctly, this field will be `OK` while the failure of the assignment must
  329. // communicated via the `result` field.
  330. Status *status.Status `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"`
  331. // The requirements that are being claimed by this lease. This field may be
  332. // omitted by the server if the lease is not pending.
  333. Requirements *Worker `protobuf:"bytes,4,opt,name=requirements,proto3" json:"requirements,omitempty"`
  334. // The time at which this lease expires. The server *may* extend this over
  335. // time, but due to race conditions, the bot is not *required* to respect any
  336. // expiry date except the first one.
  337. ExpireTime *timestamp.Timestamp `protobuf:"bytes,5,opt,name=expire_time,json=expireTime,proto3" json:"expire_time,omitempty"`
  338. // DEPRECATED. The assignment should be provided to the bot via the `payload`
  339. // field. Clients that wish to use a simple name (such as a queue of work
  340. // provided elsewhere) should define a custom message type and encode it into
  341. // `payload`.
  342. Assignment string `protobuf:"bytes,1,opt,name=assignment,proto3" json:"assignment,omitempty"` // Deprecated: Do not use.
  343. // DEPRECATED. Use `payload` instead.
  344. InlineAssignment *any.Any `protobuf:"bytes,6,opt,name=inline_assignment,json=inlineAssignment,proto3" json:"inline_assignment,omitempty"` // Deprecated: Do not use.
  345. XXX_NoUnkeyedLiteral struct{} `json:"-"`
  346. XXX_unrecognized []byte `json:"-"`
  347. XXX_sizecache int32 `json:"-"`
  348. }
  349. func (m *Lease) Reset() { *m = Lease{} }
  350. func (m *Lease) String() string { return proto.CompactTextString(m) }
  351. func (*Lease) ProtoMessage() {}
  352. func (*Lease) Descriptor() ([]byte, []int) {
  353. return fileDescriptor_bots_98c3d73c9e0a8e55, []int{1}
  354. }
  355. func (m *Lease) XXX_Unmarshal(b []byte) error {
  356. return xxx_messageInfo_Lease.Unmarshal(m, b)
  357. }
  358. func (m *Lease) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
  359. return xxx_messageInfo_Lease.Marshal(b, m, deterministic)
  360. }
  361. func (dst *Lease) XXX_Merge(src proto.Message) {
  362. xxx_messageInfo_Lease.Merge(dst, src)
  363. }
  364. func (m *Lease) XXX_Size() int {
  365. return xxx_messageInfo_Lease.Size(m)
  366. }
  367. func (m *Lease) XXX_DiscardUnknown() {
  368. xxx_messageInfo_Lease.DiscardUnknown(m)
  369. }
  370. var xxx_messageInfo_Lease proto.InternalMessageInfo
  371. func (m *Lease) GetId() string {
  372. if m != nil {
  373. return m.Id
  374. }
  375. return ""
  376. }
  377. func (m *Lease) GetPayload() *any.Any {
  378. if m != nil {
  379. return m.Payload
  380. }
  381. return nil
  382. }
  383. func (m *Lease) GetResult() *any.Any {
  384. if m != nil {
  385. return m.Result
  386. }
  387. return nil
  388. }
  389. func (m *Lease) GetState() LeaseState {
  390. if m != nil {
  391. return m.State
  392. }
  393. return LeaseState_LEASE_STATE_UNSPECIFIED
  394. }
  395. func (m *Lease) GetStatus() *status.Status {
  396. if m != nil {
  397. return m.Status
  398. }
  399. return nil
  400. }
  401. func (m *Lease) GetRequirements() *Worker {
  402. if m != nil {
  403. return m.Requirements
  404. }
  405. return nil
  406. }
  407. func (m *Lease) GetExpireTime() *timestamp.Timestamp {
  408. if m != nil {
  409. return m.ExpireTime
  410. }
  411. return nil
  412. }
  413. // Deprecated: Do not use.
  414. func (m *Lease) GetAssignment() string {
  415. if m != nil {
  416. return m.Assignment
  417. }
  418. return ""
  419. }
  420. // Deprecated: Do not use.
  421. func (m *Lease) GetInlineAssignment() *any.Any {
  422. if m != nil {
  423. return m.InlineAssignment
  424. }
  425. return nil
  426. }
  427. // AdminTemp is a prelimiary set of administration tasks. It's called "Temp"
  428. // because we do not yet know the best way to represent admin tasks; it's
  429. // possible that this will be entirely replaced in later versions of this API.
  430. // If this message proves to be sufficient, it will be renamed in the alpha or
  431. // beta release of this API.
  432. //
  433. // This message (suitably marshalled into a protobuf.Any) can be used as the
  434. // inline_assignment field in a lease; the lease assignment field should simply
  435. // be `"admin"` in these cases.
  436. //
  437. // This message is heavily based on Swarming administration tasks from the LUCI
  438. // project (http://github.com/luci/luci-py/appengine/swarming).
  439. type AdminTemp struct {
  440. // The admin action; see `Command` for legal values.
  441. Command AdminTemp_Command `protobuf:"varint,1,opt,name=command,proto3,enum=google.devtools.remoteworkers.v1test2.AdminTemp_Command" json:"command,omitempty"`
  442. // The argument to the admin action; see `Command` for semantics.
  443. Arg string `protobuf:"bytes,2,opt,name=arg,proto3" json:"arg,omitempty"`
  444. XXX_NoUnkeyedLiteral struct{} `json:"-"`
  445. XXX_unrecognized []byte `json:"-"`
  446. XXX_sizecache int32 `json:"-"`
  447. }
  448. func (m *AdminTemp) Reset() { *m = AdminTemp{} }
  449. func (m *AdminTemp) String() string { return proto.CompactTextString(m) }
  450. func (*AdminTemp) ProtoMessage() {}
  451. func (*AdminTemp) Descriptor() ([]byte, []int) {
  452. return fileDescriptor_bots_98c3d73c9e0a8e55, []int{2}
  453. }
  454. func (m *AdminTemp) XXX_Unmarshal(b []byte) error {
  455. return xxx_messageInfo_AdminTemp.Unmarshal(m, b)
  456. }
  457. func (m *AdminTemp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
  458. return xxx_messageInfo_AdminTemp.Marshal(b, m, deterministic)
  459. }
  460. func (dst *AdminTemp) XXX_Merge(src proto.Message) {
  461. xxx_messageInfo_AdminTemp.Merge(dst, src)
  462. }
  463. func (m *AdminTemp) XXX_Size() int {
  464. return xxx_messageInfo_AdminTemp.Size(m)
  465. }
  466. func (m *AdminTemp) XXX_DiscardUnknown() {
  467. xxx_messageInfo_AdminTemp.DiscardUnknown(m)
  468. }
  469. var xxx_messageInfo_AdminTemp proto.InternalMessageInfo
  470. func (m *AdminTemp) GetCommand() AdminTemp_Command {
  471. if m != nil {
  472. return m.Command
  473. }
  474. return AdminTemp_UNSPECIFIED
  475. }
  476. func (m *AdminTemp) GetArg() string {
  477. if m != nil {
  478. return m.Arg
  479. }
  480. return ""
  481. }
  482. // Request message for CreateBotSession.
  483. type CreateBotSessionRequest struct {
  484. // The farm resource.
  485. Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
  486. // The bot session to create. Server-assigned fields like name must be unset.
  487. BotSession *BotSession `protobuf:"bytes,2,opt,name=bot_session,json=botSession,proto3" json:"bot_session,omitempty"`
  488. XXX_NoUnkeyedLiteral struct{} `json:"-"`
  489. XXX_unrecognized []byte `json:"-"`
  490. XXX_sizecache int32 `json:"-"`
  491. }
  492. func (m *CreateBotSessionRequest) Reset() { *m = CreateBotSessionRequest{} }
  493. func (m *CreateBotSessionRequest) String() string { return proto.CompactTextString(m) }
  494. func (*CreateBotSessionRequest) ProtoMessage() {}
  495. func (*CreateBotSessionRequest) Descriptor() ([]byte, []int) {
  496. return fileDescriptor_bots_98c3d73c9e0a8e55, []int{3}
  497. }
  498. func (m *CreateBotSessionRequest) XXX_Unmarshal(b []byte) error {
  499. return xxx_messageInfo_CreateBotSessionRequest.Unmarshal(m, b)
  500. }
  501. func (m *CreateBotSessionRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
  502. return xxx_messageInfo_CreateBotSessionRequest.Marshal(b, m, deterministic)
  503. }
  504. func (dst *CreateBotSessionRequest) XXX_Merge(src proto.Message) {
  505. xxx_messageInfo_CreateBotSessionRequest.Merge(dst, src)
  506. }
  507. func (m *CreateBotSessionRequest) XXX_Size() int {
  508. return xxx_messageInfo_CreateBotSessionRequest.Size(m)
  509. }
  510. func (m *CreateBotSessionRequest) XXX_DiscardUnknown() {
  511. xxx_messageInfo_CreateBotSessionRequest.DiscardUnknown(m)
  512. }
  513. var xxx_messageInfo_CreateBotSessionRequest proto.InternalMessageInfo
  514. func (m *CreateBotSessionRequest) GetParent() string {
  515. if m != nil {
  516. return m.Parent
  517. }
  518. return ""
  519. }
  520. func (m *CreateBotSessionRequest) GetBotSession() *BotSession {
  521. if m != nil {
  522. return m.BotSession
  523. }
  524. return nil
  525. }
  526. // Request message for UpdateBotSession.
  527. type UpdateBotSessionRequest struct {
  528. // The bot session name. Must match bot_session.name.
  529. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
  530. // The bot session resource to update.
  531. BotSession *BotSession `protobuf:"bytes,2,opt,name=bot_session,json=botSession,proto3" json:"bot_session,omitempty"`
  532. // The fields on the bot that should be updated. See the BotSession resource
  533. // for which fields are updatable by which caller.
  534. UpdateMask *field_mask.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
  535. XXX_NoUnkeyedLiteral struct{} `json:"-"`
  536. XXX_unrecognized []byte `json:"-"`
  537. XXX_sizecache int32 `json:"-"`
  538. }
  539. func (m *UpdateBotSessionRequest) Reset() { *m = UpdateBotSessionRequest{} }
  540. func (m *UpdateBotSessionRequest) String() string { return proto.CompactTextString(m) }
  541. func (*UpdateBotSessionRequest) ProtoMessage() {}
  542. func (*UpdateBotSessionRequest) Descriptor() ([]byte, []int) {
  543. return fileDescriptor_bots_98c3d73c9e0a8e55, []int{4}
  544. }
  545. func (m *UpdateBotSessionRequest) XXX_Unmarshal(b []byte) error {
  546. return xxx_messageInfo_UpdateBotSessionRequest.Unmarshal(m, b)
  547. }
  548. func (m *UpdateBotSessionRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
  549. return xxx_messageInfo_UpdateBotSessionRequest.Marshal(b, m, deterministic)
  550. }
  551. func (dst *UpdateBotSessionRequest) XXX_Merge(src proto.Message) {
  552. xxx_messageInfo_UpdateBotSessionRequest.Merge(dst, src)
  553. }
  554. func (m *UpdateBotSessionRequest) XXX_Size() int {
  555. return xxx_messageInfo_UpdateBotSessionRequest.Size(m)
  556. }
  557. func (m *UpdateBotSessionRequest) XXX_DiscardUnknown() {
  558. xxx_messageInfo_UpdateBotSessionRequest.DiscardUnknown(m)
  559. }
  560. var xxx_messageInfo_UpdateBotSessionRequest proto.InternalMessageInfo
  561. func (m *UpdateBotSessionRequest) GetName() string {
  562. if m != nil {
  563. return m.Name
  564. }
  565. return ""
  566. }
  567. func (m *UpdateBotSessionRequest) GetBotSession() *BotSession {
  568. if m != nil {
  569. return m.BotSession
  570. }
  571. return nil
  572. }
  573. func (m *UpdateBotSessionRequest) GetUpdateMask() *field_mask.FieldMask {
  574. if m != nil {
  575. return m.UpdateMask
  576. }
  577. return nil
  578. }
  579. // Request message for PostBotEventTemp
  580. type PostBotEventTempRequest struct {
  581. // The bot session name.
  582. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
  583. // The type of bot event.
  584. Type PostBotEventTempRequest_Type `protobuf:"varint,2,opt,name=type,proto3,enum=google.devtools.remoteworkers.v1test2.PostBotEventTempRequest_Type" json:"type,omitempty"`
  585. // A human-readable message.
  586. Msg string `protobuf:"bytes,3,opt,name=msg,proto3" json:"msg,omitempty"`
  587. XXX_NoUnkeyedLiteral struct{} `json:"-"`
  588. XXX_unrecognized []byte `json:"-"`
  589. XXX_sizecache int32 `json:"-"`
  590. }
  591. func (m *PostBotEventTempRequest) Reset() { *m = PostBotEventTempRequest{} }
  592. func (m *PostBotEventTempRequest) String() string { return proto.CompactTextString(m) }
  593. func (*PostBotEventTempRequest) ProtoMessage() {}
  594. func (*PostBotEventTempRequest) Descriptor() ([]byte, []int) {
  595. return fileDescriptor_bots_98c3d73c9e0a8e55, []int{5}
  596. }
  597. func (m *PostBotEventTempRequest) XXX_Unmarshal(b []byte) error {
  598. return xxx_messageInfo_PostBotEventTempRequest.Unmarshal(m, b)
  599. }
  600. func (m *PostBotEventTempRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
  601. return xxx_messageInfo_PostBotEventTempRequest.Marshal(b, m, deterministic)
  602. }
  603. func (dst *PostBotEventTempRequest) XXX_Merge(src proto.Message) {
  604. xxx_messageInfo_PostBotEventTempRequest.Merge(dst, src)
  605. }
  606. func (m *PostBotEventTempRequest) XXX_Size() int {
  607. return xxx_messageInfo_PostBotEventTempRequest.Size(m)
  608. }
  609. func (m *PostBotEventTempRequest) XXX_DiscardUnknown() {
  610. xxx_messageInfo_PostBotEventTempRequest.DiscardUnknown(m)
  611. }
  612. var xxx_messageInfo_PostBotEventTempRequest proto.InternalMessageInfo
  613. func (m *PostBotEventTempRequest) GetName() string {
  614. if m != nil {
  615. return m.Name
  616. }
  617. return ""
  618. }
  619. func (m *PostBotEventTempRequest) GetType() PostBotEventTempRequest_Type {
  620. if m != nil {
  621. return m.Type
  622. }
  623. return PostBotEventTempRequest_UNSPECIFIED
  624. }
  625. func (m *PostBotEventTempRequest) GetMsg() string {
  626. if m != nil {
  627. return m.Msg
  628. }
  629. return ""
  630. }
  631. func init() {
  632. proto.RegisterType((*BotSession)(nil), "google.devtools.remoteworkers.v1test2.BotSession")
  633. proto.RegisterType((*Lease)(nil), "google.devtools.remoteworkers.v1test2.Lease")
  634. proto.RegisterType((*AdminTemp)(nil), "google.devtools.remoteworkers.v1test2.AdminTemp")
  635. proto.RegisterType((*CreateBotSessionRequest)(nil), "google.devtools.remoteworkers.v1test2.CreateBotSessionRequest")
  636. proto.RegisterType((*UpdateBotSessionRequest)(nil), "google.devtools.remoteworkers.v1test2.UpdateBotSessionRequest")
  637. proto.RegisterType((*PostBotEventTempRequest)(nil), "google.devtools.remoteworkers.v1test2.PostBotEventTempRequest")
  638. proto.RegisterEnum("google.devtools.remoteworkers.v1test2.BotStatus", BotStatus_name, BotStatus_value)
  639. proto.RegisterEnum("google.devtools.remoteworkers.v1test2.LeaseState", LeaseState_name, LeaseState_value)
  640. proto.RegisterEnum("google.devtools.remoteworkers.v1test2.AdminTemp_Command", AdminTemp_Command_name, AdminTemp_Command_value)
  641. proto.RegisterEnum("google.devtools.remoteworkers.v1test2.PostBotEventTempRequest_Type", PostBotEventTempRequest_Type_name, PostBotEventTempRequest_Type_value)
  642. }
  643. // Reference imports to suppress errors if they are not otherwise used.
  644. var _ context.Context
  645. var _ grpc.ClientConn
  646. // This is a compile-time assertion to ensure that this generated file
  647. // is compatible with the grpc package it is being compiled against.
  648. const _ = grpc.SupportPackageIsVersion4
  649. // BotsClient is the client API for Bots service.
  650. //
  651. // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
  652. type BotsClient interface {
  653. // CreateBotSession is called when the bot first joins the farm, and
  654. // establishes a session ID to ensure that multiple machines do not register
  655. // using the same name accidentally.
  656. CreateBotSession(ctx context.Context, in *CreateBotSessionRequest, opts ...grpc.CallOption) (*BotSession, error)
  657. // UpdateBotSession must be called periodically by the bot (on a schedule
  658. // determined by the server) to let the server know about its status, and to
  659. // pick up new lease requests from the server.
  660. UpdateBotSession(ctx context.Context, in *UpdateBotSessionRequest, opts ...grpc.CallOption) (*BotSession, error)
  661. // PostBotEventTemp may be called by the bot to indicate that some exceptional
  662. // event has occurred. This method is subject to change or removal in future
  663. // revisions of this API; we may simply want to replace it with StackDriver or
  664. // some other common interface.
  665. PostBotEventTemp(ctx context.Context, in *PostBotEventTempRequest, opts ...grpc.CallOption) (*empty.Empty, error)
  666. }
  667. type botsClient struct {
  668. cc *grpc.ClientConn
  669. }
  670. func NewBotsClient(cc *grpc.ClientConn) BotsClient {
  671. return &botsClient{cc}
  672. }
  673. func (c *botsClient) CreateBotSession(ctx context.Context, in *CreateBotSessionRequest, opts ...grpc.CallOption) (*BotSession, error) {
  674. out := new(BotSession)
  675. err := c.cc.Invoke(ctx, "/google.devtools.remoteworkers.v1test2.Bots/CreateBotSession", in, out, opts...)
  676. if err != nil {
  677. return nil, err
  678. }
  679. return out, nil
  680. }
  681. func (c *botsClient) UpdateBotSession(ctx context.Context, in *UpdateBotSessionRequest, opts ...grpc.CallOption) (*BotSession, error) {
  682. out := new(BotSession)
  683. err := c.cc.Invoke(ctx, "/google.devtools.remoteworkers.v1test2.Bots/UpdateBotSession", in, out, opts...)
  684. if err != nil {
  685. return nil, err
  686. }
  687. return out, nil
  688. }
  689. func (c *botsClient) PostBotEventTemp(ctx context.Context, in *PostBotEventTempRequest, opts ...grpc.CallOption) (*empty.Empty, error) {
  690. out := new(empty.Empty)
  691. err := c.cc.Invoke(ctx, "/google.devtools.remoteworkers.v1test2.Bots/PostBotEventTemp", in, out, opts...)
  692. if err != nil {
  693. return nil, err
  694. }
  695. return out, nil
  696. }
  697. // BotsServer is the server API for Bots service.
  698. type BotsServer interface {
  699. // CreateBotSession is called when the bot first joins the farm, and
  700. // establishes a session ID to ensure that multiple machines do not register
  701. // using the same name accidentally.
  702. CreateBotSession(context.Context, *CreateBotSessionRequest) (*BotSession, error)
  703. // UpdateBotSession must be called periodically by the bot (on a schedule
  704. // determined by the server) to let the server know about its status, and to
  705. // pick up new lease requests from the server.
  706. UpdateBotSession(context.Context, *UpdateBotSessionRequest) (*BotSession, error)
  707. // PostBotEventTemp may be called by the bot to indicate that some exceptional
  708. // event has occurred. This method is subject to change or removal in future
  709. // revisions of this API; we may simply want to replace it with StackDriver or
  710. // some other common interface.
  711. PostBotEventTemp(context.Context, *PostBotEventTempRequest) (*empty.Empty, error)
  712. }
  713. func RegisterBotsServer(s *grpc.Server, srv BotsServer) {
  714. s.RegisterService(&_Bots_serviceDesc, srv)
  715. }
  716. func _Bots_CreateBotSession_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  717. in := new(CreateBotSessionRequest)
  718. if err := dec(in); err != nil {
  719. return nil, err
  720. }
  721. if interceptor == nil {
  722. return srv.(BotsServer).CreateBotSession(ctx, in)
  723. }
  724. info := &grpc.UnaryServerInfo{
  725. Server: srv,
  726. FullMethod: "/google.devtools.remoteworkers.v1test2.Bots/CreateBotSession",
  727. }
  728. handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  729. return srv.(BotsServer).CreateBotSession(ctx, req.(*CreateBotSessionRequest))
  730. }
  731. return interceptor(ctx, in, info, handler)
  732. }
  733. func _Bots_UpdateBotSession_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  734. in := new(UpdateBotSessionRequest)
  735. if err := dec(in); err != nil {
  736. return nil, err
  737. }
  738. if interceptor == nil {
  739. return srv.(BotsServer).UpdateBotSession(ctx, in)
  740. }
  741. info := &grpc.UnaryServerInfo{
  742. Server: srv,
  743. FullMethod: "/google.devtools.remoteworkers.v1test2.Bots/UpdateBotSession",
  744. }
  745. handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  746. return srv.(BotsServer).UpdateBotSession(ctx, req.(*UpdateBotSessionRequest))
  747. }
  748. return interceptor(ctx, in, info, handler)
  749. }
  750. func _Bots_PostBotEventTemp_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  751. in := new(PostBotEventTempRequest)
  752. if err := dec(in); err != nil {
  753. return nil, err
  754. }
  755. if interceptor == nil {
  756. return srv.(BotsServer).PostBotEventTemp(ctx, in)
  757. }
  758. info := &grpc.UnaryServerInfo{
  759. Server: srv,
  760. FullMethod: "/google.devtools.remoteworkers.v1test2.Bots/PostBotEventTemp",
  761. }
  762. handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  763. return srv.(BotsServer).PostBotEventTemp(ctx, req.(*PostBotEventTempRequest))
  764. }
  765. return interceptor(ctx, in, info, handler)
  766. }
  767. var _Bots_serviceDesc = grpc.ServiceDesc{
  768. ServiceName: "google.devtools.remoteworkers.v1test2.Bots",
  769. HandlerType: (*BotsServer)(nil),
  770. Methods: []grpc.MethodDesc{
  771. {
  772. MethodName: "CreateBotSession",
  773. Handler: _Bots_CreateBotSession_Handler,
  774. },
  775. {
  776. MethodName: "UpdateBotSession",
  777. Handler: _Bots_UpdateBotSession_Handler,
  778. },
  779. {
  780. MethodName: "PostBotEventTemp",
  781. Handler: _Bots_PostBotEventTemp_Handler,
  782. },
  783. },
  784. Streams: []grpc.StreamDesc{},
  785. Metadata: "google/devtools/remoteworkers/v1test2/bots.proto",
  786. }
  787. func init() {
  788. proto.RegisterFile("google/devtools/remoteworkers/v1test2/bots.proto", fileDescriptor_bots_98c3d73c9e0a8e55)
  789. }
  790. var fileDescriptor_bots_98c3d73c9e0a8e55 = []byte{
  791. // 1075 bytes of a gzipped FileDescriptorProto
  792. 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0xdd, 0x8e, 0xdb, 0x44,
  793. 0x14, 0xc6, 0xce, 0x5f, 0x73, 0xd2, 0xa6, 0xee, 0x00, 0x5d, 0x93, 0x22, 0x11, 0x59, 0xaa, 0xb4,
  794. 0x44, 0x8b, 0xdd, 0x0d, 0x42, 0x42, 0xad, 0x8a, 0x94, 0x1f, 0xef, 0x6e, 0x44, 0x36, 0x09, 0x13,
  795. 0x6f, 0x57, 0x70, 0x93, 0x3a, 0x9b, 0x69, 0x64, 0x6d, 0xec, 0x71, 0x3d, 0x93, 0x85, 0x15, 0xea,
  796. 0x0d, 0x12, 0x4f, 0xc0, 0x13, 0xc0, 0x15, 0xe2, 0x19, 0x10, 0x12, 0x37, 0xbc, 0x40, 0x5f, 0x81,
  797. 0xbe, 0x07, 0x9a, 0xb1, 0x93, 0x4d, 0xb2, 0xdd, 0xd6, 0x0b, 0xe2, 0x6e, 0x7e, 0xbe, 0xef, 0x9c,
  798. 0x2f, 0xe7, 0x7c, 0x67, 0x62, 0x78, 0x30, 0xa5, 0x74, 0x3a, 0x23, 0xd6, 0x84, 0x9c, 0x71, 0x4a,
  799. 0x67, 0xcc, 0x8a, 0x88, 0x4f, 0x39, 0xf9, 0x96, 0x46, 0xa7, 0x24, 0x62, 0xd6, 0xd9, 0x2e, 0x27,
  800. 0x8c, 0xd7, 0xad, 0x31, 0xe5, 0xcc, 0x0c, 0x23, 0xca, 0x29, 0xba, 0x1f, 0x33, 0xcc, 0x05, 0xc3,
  801. 0x5c, 0x63, 0x98, 0x09, 0xa3, 0xf2, 0x61, 0x12, 0xd8, 0x0d, 0x3d, 0xcb, 0x0d, 0x02, 0xca, 0x5d,
  802. 0xee, 0xd1, 0x20, 0x09, 0x52, 0xa9, 0xa7, 0x4b, 0x1b, 0xef, 0x13, 0xce, 0x07, 0x09, 0x47, 0xee,
  803. 0xc6, 0xf3, 0x67, 0x96, 0x1b, 0x9c, 0x27, 0x57, 0xf7, 0x36, 0xaf, 0x88, 0x1f, 0xf2, 0xc5, 0x65,
  804. 0x75, 0xf3, 0xf2, 0x99, 0x47, 0x66, 0x93, 0x91, 0xef, 0xb2, 0xd3, 0x04, 0xf1, 0xd1, 0x26, 0x82,
  805. 0x7b, 0x3e, 0x61, 0xdc, 0xf5, 0xc3, 0x04, 0xb0, 0x95, 0x00, 0xa2, 0xf0, 0xc4, 0x62, 0xdc, 0xe5,
  806. 0xf3, 0xe4, 0x77, 0x18, 0xaf, 0x54, 0x80, 0x26, 0xe5, 0x43, 0xc2, 0x98, 0x47, 0x03, 0x84, 0x20,
  807. 0x1b, 0xb8, 0x3e, 0xd1, 0x95, 0xaa, 0xb2, 0x5d, 0xc4, 0x72, 0x8d, 0xde, 0x87, 0xfc, 0x98, 0xf2,
  808. 0x91, 0x37, 0xd1, 0x55, 0x79, 0x9a, 0x1b, 0x53, 0xde, 0x99, 0xa0, 0x03, 0xc8, 0xc7, 0x91, 0xf4,
  809. 0x4c, 0x55, 0xd9, 0x2e, 0xd7, 0x1f, 0x98, 0xa9, 0xea, 0x6a, 0x8a, 0x6c, 0x92, 0x87, 0x13, 0x3e,
  810. 0xb2, 0x21, 0x1f, 0x83, 0xf4, 0x6c, 0x55, 0xd9, 0x2e, 0xd5, 0x3f, 0x49, 0x19, 0xe9, 0x58, 0xee,
  811. 0x71, 0x42, 0x46, 0x6d, 0xc8, 0xcf, 0x88, 0xcb, 0x08, 0xd3, 0x73, 0xd5, 0xcc, 0x76, 0xa9, 0xbe,
  812. 0x93, 0x32, 0x4c, 0x57, 0x90, 0x70, 0xc2, 0x45, 0x8f, 0xa0, 0x44, 0xbe, 0x0b, 0xbd, 0x88, 0x8c,
  813. 0x44, 0x0d, 0xf5, 0xbc, 0x54, 0x54, 0x59, 0x84, 0x5a, 0x14, 0xd8, 0x74, 0x16, 0x05, 0xc6, 0x10,
  814. 0xc3, 0xc5, 0x01, 0xd2, 0xa1, 0x70, 0x46, 0x22, 0x51, 0x49, 0xbd, 0x20, 0x6b, 0xb5, 0xd8, 0x1a,
  815. 0xaf, 0x32, 0x90, 0x93, 0x89, 0x50, 0x19, 0x54, 0x6f, 0x92, 0x5c, 0xab, 0xde, 0x04, 0x99, 0x50,
  816. 0x08, 0xdd, 0xf3, 0x19, 0x75, 0x27, 0xfa, 0x0d, 0x99, 0xec, 0xbd, 0x4b, 0xc9, 0x1a, 0xc1, 0x39,
  817. 0x5e, 0x80, 0xd0, 0x0e, 0xe4, 0x23, 0xc2, 0xe6, 0x33, 0xae, 0x17, 0xdf, 0x00, 0x4f, 0x30, 0x68,
  818. 0x1f, 0x72, 0xa2, 0xca, 0x44, 0xf6, 0xae, 0x5c, 0xdf, 0xbd, 0x4e, 0x4d, 0x44, 0x9b, 0x08, 0x8e,
  819. 0xf9, 0xa8, 0xb6, 0xd6, 0xee, 0x52, 0x1d, 0x2d, 0x22, 0x45, 0xe1, 0x89, 0xb9, 0xd1, 0xd0, 0xaf,
  820. 0xe0, 0x66, 0x44, 0x9e, 0xcf, 0xbd, 0x88, 0xf8, 0x24, 0xe0, 0xec, 0xdf, 0xb5, 0x75, 0x2d, 0xc4,
  821. 0x66, 0x5b, 0x72, 0xd7, 0x6a, 0x8b, 0x01, 0xe0, 0x32, 0xe6, 0x4d, 0x03, 0x11, 0x2b, 0xf6, 0x76,
  822. 0x53, 0xd5, 0x15, 0xbc, 0x72, 0x8a, 0x6c, 0xb8, 0xe3, 0x05, 0x33, 0x2f, 0x20, 0xa3, 0x15, 0x68,
  823. 0xfe, 0xea, 0x0a, 0xcb, 0x00, 0x5a, 0x4c, 0x69, 0x2c, 0x19, 0xc6, 0x4b, 0x05, 0x8a, 0x8d, 0x89,
  824. 0xef, 0x05, 0x0e, 0xf1, 0x43, 0x84, 0xa1, 0x70, 0x42, 0x7d, 0xdf, 0x0d, 0x26, 0x32, 0x6b, 0xb9,
  825. 0xfe, 0x79, 0xca, 0x1a, 0x2c, 0x43, 0x98, 0xad, 0x98, 0x8f, 0x17, 0x81, 0x90, 0x06, 0x19, 0x37,
  826. 0x9a, 0x26, 0xb3, 0x28, 0x96, 0xc6, 0x53, 0x28, 0x24, 0x28, 0x74, 0x1b, 0x4a, 0x47, 0xbd, 0xe1,
  827. 0xc0, 0x6e, 0x75, 0xf6, 0x3a, 0x76, 0x5b, 0x7b, 0x07, 0x95, 0x01, 0x9a, 0x7d, 0x67, 0x74, 0x34,
  828. 0x68, 0x37, 0x1c, 0x5b, 0x53, 0x04, 0x40, 0xec, 0xb1, 0x3d, 0x74, 0x1a, 0xd8, 0xd1, 0x54, 0x74,
  829. 0x07, 0x6e, 0x89, 0x03, 0xc7, 0xc6, 0x87, 0x9d, 0x9e, 0xc0, 0x64, 0x90, 0x06, 0x37, 0x0f, 0xfa,
  830. 0xc3, 0x0b, 0x50, 0xd6, 0xf8, 0x51, 0x81, 0xad, 0x56, 0x44, 0x5c, 0x4e, 0x2e, 0xde, 0x0a, 0x4c,
  831. 0x9e, 0xcf, 0x09, 0xe3, 0xe8, 0x2e, 0xe4, 0x43, 0x37, 0x5a, 0x16, 0x16, 0x27, 0x3b, 0x84, 0xa1,
  832. 0x24, 0x9e, 0x0d, 0x16, 0xa3, 0xa5, 0xde, 0x52, 0x6a, 0xff, 0xad, 0xa4, 0x81, 0xf1, 0x72, 0x6d,
  833. 0xfc, 0xa1, 0xc0, 0xd6, 0x51, 0x38, 0x79, 0xad, 0x8e, 0xd7, 0x3d, 0x5d, 0xff, 0x83, 0x06, 0xe1,
  834. 0xc4, 0xb9, 0x94, 0x20, 0x1f, 0xe0, 0x64, 0x1a, 0x2e, 0x3b, 0x71, 0x4f, 0xbc, 0xd1, 0x87, 0x2e,
  835. 0x3b, 0xc5, 0x10, 0xc3, 0xc5, 0xda, 0xf8, 0x4b, 0x81, 0xad, 0x01, 0x65, 0xbc, 0x49, 0xb9, 0x7d,
  836. 0x46, 0x02, 0x2e, 0x5a, 0xfc, 0xa6, 0x1f, 0x70, 0x0c, 0x59, 0x7e, 0x1e, 0x2e, 0xa6, 0xb7, 0x95,
  837. 0x52, 0xf9, 0x15, 0x19, 0x4c, 0xe7, 0x3c, 0x24, 0x58, 0x06, 0x14, 0x2e, 0xf2, 0xd9, 0x54, 0xaa,
  838. 0x2f, 0x62, 0xb1, 0x34, 0x76, 0x20, 0x2b, 0xee, 0x2f, 0x5b, 0xe8, 0x06, 0x64, 0x3b, 0xbd, 0xbd,
  839. 0xbe, 0xa6, 0xa0, 0x22, 0xe4, 0x6c, 0x8c, 0xfb, 0x58, 0x53, 0x6b, 0x53, 0x28, 0x2e, 0x1f, 0x72,
  840. 0x54, 0x81, 0xbb, 0xc2, 0x43, 0x43, 0xa7, 0xe1, 0x1c, 0x0d, 0x47, 0xeb, 0xec, 0x3c, 0xa8, 0xfd,
  841. 0x2f, 0x35, 0x05, 0xdd, 0x82, 0xe2, 0x51, 0xef, 0xc0, 0x6e, 0x74, 0x9d, 0x83, 0xaf, 0x35, 0x15,
  842. 0x21, 0x28, 0x27, 0x1e, 0x6b, 0xf6, 0xfb, 0x4e, 0xa7, 0xb7, 0xaf, 0x65, 0xd0, 0xbb, 0x70, 0x7b,
  843. 0xd5, 0x8a, 0xe2, 0x30, 0x5b, 0x7b, 0x0a, 0x70, 0xf1, 0x18, 0xa1, 0x7b, 0xb0, 0xd5, 0xb5, 0x1b,
  844. 0x43, 0x5b, 0xe6, 0xb2, 0x37, 0x52, 0x95, 0xa0, 0x30, 0xb0, 0x7b, 0x6d, 0xc1, 0x53, 0x10, 0x40,
  845. 0xbe, 0xd1, 0x72, 0x3a, 0x4f, 0x6c, 0x4d, 0x15, 0xb9, 0x5b, 0xfd, 0xc3, 0x41, 0xd7, 0x76, 0xec,
  846. 0xb6, 0x96, 0x95, 0xdb, 0x46, 0xaf, 0x65, 0x77, 0xbb, 0x76, 0x5b, 0xcb, 0xd5, 0x7f, 0xcd, 0x42,
  847. 0xb6, 0x49, 0x39, 0x43, 0xbf, 0x2b, 0xa0, 0x6d, 0xba, 0x1c, 0x7d, 0x91, 0xb2, 0xe6, 0x57, 0x8c,
  848. 0x47, 0xe5, 0xfa, 0x6e, 0x33, 0x3e, 0xfb, 0xe1, 0xe5, 0xdf, 0x3f, 0xa9, 0x96, 0x51, 0x5d, 0x7e,
  849. 0x46, 0x7c, 0x1f, 0xcf, 0xd4, 0xe3, 0x5a, 0xed, 0x85, 0x75, 0x61, 0x45, 0xf6, 0x70, 0xd5, 0xdd,
  850. 0x52, 0xfe, 0xe6, 0x70, 0xa4, 0x96, 0x7f, 0xc5, 0x54, 0xfd, 0x07, 0xf9, 0xf5, 0x15, 0xf9, 0xc2,
  851. 0xcb, 0x8f, 0x6b, 0xb5, 0x55, 0xed, 0x56, 0xed, 0xc5, 0xba, 0xfc, 0x9f, 0x15, 0xd0, 0x36, 0x8d,
  852. 0x9b, 0x5a, 0xfe, 0x15, 0x8e, 0xaf, 0xdc, 0xbd, 0x34, 0x97, 0xb6, 0xf8, 0xb0, 0x5a, 0x96, 0xb8,
  853. 0xf6, 0x56, 0x8d, 0x21, 0x65, 0x71, 0xd8, 0x87, 0x4a, 0xad, 0xf9, 0xa7, 0x02, 0x1f, 0x9f, 0x50,
  854. 0x3f, 0x9d, 0xa8, 0xe6, 0x1d, 0x2c, 0x8f, 0xe3, 0xff, 0x33, 0x26, 0x2c, 0x36, 0x50, 0xbe, 0xc1,
  855. 0x09, 0x77, 0x4a, 0x67, 0x6e, 0x30, 0x35, 0x69, 0x34, 0xb5, 0xa6, 0x24, 0x90, 0xf2, 0xac, 0xf8,
  856. 0xca, 0x0d, 0x3d, 0xf6, 0x96, 0xef, 0xca, 0x47, 0x6b, 0xa7, 0xbf, 0xa8, 0x2a, 0x3e, 0xfe, 0x4d,
  857. 0xbd, 0xbf, 0x1f, 0x47, 0x6e, 0x93, 0x33, 0x47, 0xaa, 0x5a, 0x4b, 0x6f, 0x3e, 0xd9, 0x75, 0x04,
  858. 0x75, 0x9c, 0x97, 0xb9, 0x3e, 0xfd, 0x27, 0x00, 0x00, 0xff, 0xff, 0x75, 0x00, 0xcd, 0xd5, 0x39,
  859. 0x0b, 0x00, 0x00,
  860. }